Fastapi使用redis

news/2024/11/13 15:43:19/文章来源:https://www.cnblogs.com/qcy-blog/p/18544076

异步版本 rediss.py

from fastapi import FastAPI, Depends,APIRouter
import redis.asyncio as aioredis
import uvicorn
from contextlib import asynccontextmanagerapp = FastAPI()# Redis 连接池配置
REDIS_URL = "redis://192.168.252.128:6379/0"@asynccontextmanager
async def lifespan(app: FastAPI):# 初始化 Redis 客户端app.state.redis = await aioredis.from_url(REDIS_URL)yield# 关闭 Redis 连接await app.state.redis.close()app.router.lifespan_context = lifespandef get_redis_client():return app.state.redisrouter = APIRouter()@router.get("/set/{key}/{value}")
async def set_key(key: str, value: str, redis: aioredis.Redis = Depends(get_redis_client)):await redis.set(key, value)return {"message": f"Key {key} set to {value}"}@router.get("/get/{key}")
async def get_key(key: str, redis: aioredis.Redis = Depends(get_redis_client)):value = await redis.get(key)if value:return {"key": key, "value": value.decode()}else:return {"message": f"Key {key} not found"}app.include_router(router)if __name__ == "__main__":uvicorn.run("rediss:app", host="0.0.0.0", port=8089, reload=True, )

异步连接池版本

from fastapi import FastAPI, Depends, APIRouter
import aioredis
import uvicorn
from contextlib import asynccontextmanagerapp = FastAPI()
# Redis 连接池配置
REDIS_URL = "redis://192.168.252.128:6379/0"
@asynccontextmanager
async def lifespan(app: FastAPI):# 初始化 Redis 连接池app.state.redis_pool = await aioredis.from_url(REDIS_URL)try:yieldfinally:# 关闭 Redis 连接池app.state.redis_pool.close()await app.state.redis_pool.wait_closed()app.router.lifespan_context = lifespanasync def get_redis_client():async with app.state.redis_pool as redis:return redisrouter = APIRouter()@router.get("/set/{key}/{value}")
async def set_key(key: str, value: str, redis: aioredis.Redis = Depends(get_redis_client)):await redis.set(key, value)return {"message": f"Key {key} set to {value}"}@router.get("/get/{key}")
async def get_key(key: str, redis: aioredis.Redis = Depends(get_redis_client)):value = await redis.get(key)if value:return {"key": key, "value": value.decode()}else:return {"message": f"Key {key} not found"}app.include_router(router)if __name__ == "__main__":uvicorn.run("rediss:app", host="0.0.0.0", port=8089, reload=True, )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/832993.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MIGO DUMP LCX_RAP_EVENT_RUNTIME CL_RAP_EVENT_MANAGER==========CP

MIGO 收货时发生DUMP运行事务代码:SBGRFCCONF 创建入站目标输入目标BGPF 保存即可TRANSLATE with xEnglishArabic Hebrew PolishBulgarian Hindi PortugueseCatalan Hmong Daw RomanianChinese Simplified Hungarian RussianChinese Traditional Indonesian SlovakCzech Ital…

非煤矿山算法智慧矿山一体机提升机危险区域违规闯入识别边坡监测预警系统详述

在矿山行业中,安全始终是最为关键的议题。随着智能化技术的发展,智慧矿山一体机应运而生,它专为矿山安全监控和管理设计,集成了多种智能化功能,以提升矿山的安全监管能力和生产效率。这款设备不仅能够满足矿山场景下的视频智能化建设需求,还能够通过边缘计算技术实现对矿…

全国职业院校技能大赛

老师说目前这个是省赛,预计12月参加,如果要准备的话,预计要有一个月的时间准备我看了一下往年的题目,确实是平常老师跟我们讲的那种术语什么的

Hadoop搭建集群

不知道为什么会出现这样的结果

使用idea创建Sping Boot 项目 发现不能使用JAVA版本是8或者11版本只能用17版本已经更高

接下来需要一个骚操作, 官方地址: https://start.spring.io阿里云脚手架地址:https://start.aliyun.com/

[题解]P3225 [HNOI2012] 矿场搭建

P3225 [HNOI2012] 矿场搭建 挖煤点坍塌相当于把该点和与其相连的边在图上删掉。 借用wjyyy的题解,我们定义“叶子连通块”为“只包含\(1\)个割点的点双连通分量”,“非叶子连通块”为“包含\(\ge 2\)个割点的点双连通分量”。 如下图,橙色点是割点,红色框圈出的是点双,加粗…

DDCA —— 内存架构和子系统内存控制器

Digital Design and Computer Architecture Lecture21的学习笔记,介绍内存架构和子系统、内存控制器,并详细介绍了DRAM的内部结构。1. 内存架构和子系统 1.1 如何控制访问?访问控制:存储单元的访问是通过 访问晶体管(access transistors) 进行控制的。访问晶体管像开关一…

ubuntu上安装 NVIDIA GeForce RTX 4090驱动

背景 ai服务器上安装完ubuntu系统后,需要安装NVIDIA显卡驱动 官网驱动下载https://www.nvidia.cn/drivers/details/235646/驱动安装 1.卸载原有驱动 sudo apt remove --purge nvidia*2.备份 sudo cp /etc/modprobe.d/blacklist.conf /etc/modprobe.d/blacklist.conf_bak 3.末尾…

springboot将文件处理成压缩文件

前言 在工作我们经常会出现有多个文件,为了节省资源会将多个文件放在一起进行压缩处理;为了让大家进一步了解我先将springboot处理的方法总结如下,有不到之处敬请大家批评指正! 一、文件准备:https://qnsc.oss-cn-beijing.aliyuncs.com/crmebimage/public/product/2024/11…

CMDB平台(进阶篇):CMDB的构建指南(一)

CMDB(配置管理数据库)的构建是一个复杂而细致的过程,其中组建项目团队和定义项目是至关重要的初始阶段。以下是根据高权威性来源整理的,关于这两个阶段的详细指南: 一、组建项目团队 团队角色与技能: 选择的团队必须具备相应的技能、经验、知识去解释、设计和实施一个CMD…

出差及报销问题

出差问题 报销问题 一、提交报销申请提交报销申请在应用导航的 ERP门户系统 中,选择我要报账在保障服务平台--单据管理--全部单据里选择--差旅费报账单(新)报销申请单填写选择想要报销的出差审批单上传想要报销的发票后点击下一步填写基本信息影像张数: 上传附件图片数量。…

职场效率倍增!学会这6个任务管理法则轻松完成工作

身处职场,我们每个人都在日复一日的工作中面对着不断增加的任务清单。如何有效管理、合理分配、确保准时交付,成了现代职场人最常面临的挑战之一。如果管理不当,不仅影响个人效率,整个团队也可能因此陷入无休止的混乱与低效。经过几年的职场摸索,我总结出了一些应对繁杂任…