FastAPI 学习之路(五十五)操作Redis

之前我们分享了操作关系型数据库,具体文章,

    FastAPI 学习之路(三十二)创建数据库

    FastAPI 学习之路(三十三)操作数据库

     FastAPI 学习之路(三十四)数据库多表操作

      这次我们分享的是非关系型数据库--Redis。

        首先,我们安装对应的依赖

pip intsall aioredis==1.3.1 

      接下来,我们去导入创建对应的连接。

from aioredis import create_redis_pool, Redis
from fastapi import  FastAPI
app = FastAPI()
async def get_redis_pool() -> Redis:
    redis = await create_redis_pool(f"redis://:@127.0.0.1:6379/0?encoding=utf-8")
    return redis
@app.on_event("startup")
async def startup_event():
    app.state.redis = await get_redis_pool()
@app.on_event("shutdown")
async def shutdown_event():
    app.state.redis.close()
    await app.state.redis.wait_closed()

这里我们也利用了上次分享的事件,FastAPI 学习之路(五十三)startup 和 shutdown。接下来,我们去创建一个api去操作对应的一个api,进行调试。

@app.get("/test", summary="测试redis")
async def test_redis(request: Request, num: int=Query(123, title="参数num")):
    #  等待redis写入  await异步变同步 
    # 如果不关心结果可以不用await,但是这里下一步要取值,
    # 必须得先等存完值 后再取值
    await request.app.state.redis.set("test", num)
    # 等待 redis读取
    v = await request.app.state.redis.get("test")
    print(v, type(v))
    return {"msg": v}

 我们可以用postman请求下。

FastAPI 学习之路(五十五)操作Redis

 

     我们看下。redis是否存储

FastAPI 学习之路(五十五)操作Redis

 

 我们可以看到redis存储了我们的数据,我们的接口也正常返回了。这只是一个简单的demo。后续我们可以存储缓存,也可以来存储我们的token。

文章首发在公众号,欢迎关注。

FastAPI 学习之路(五十五)操作Redis

上一篇:async,awaite与promise的区别


下一篇:实现支持多公众号的微信公众号扫码登录服务