推荐答案
在 FastAPI 中集成 Redis 可以通过 aioredis 或 redis-py 库来实现。以下是使用 aioredis 的推荐方式:
安装依赖:
pip install fastapi uvicorn aioredis
在 FastAPI 应用中集成 Redis:
// www.javascriptcn.com code example from fastapi import FastAPI, Depends from aioredis import Redis, from_url app = FastAPI() async def get_redis() -> Redis: redis = await from_url("redis://localhost:6379") return redis @app.get("/set/{key}/{value}") async def set_key(key: str, value: str, redis: Redis = Depends(get_redis)): await redis.set(key, value) return {"status": "ok"} @app.get("/get/{key}") async def get_key(key: str, redis: Redis = Depends(get_redis)): value = await redis.get(key) return {"key": key, "value": value}运行应用:
uvicorn main:app --reload
本题详细解读
1. 依赖安装
首先需要安装 aioredis 库,它是一个异步的 Redis 客户端库,适用于 Python 的异步编程环境。fastapi 和 uvicorn 是 FastAPI 应用的基础依赖。
2. Redis 连接池
在 get_redis 函数中,使用 aioredis.from_url 方法创建 Redis 连接。这个方法支持连接池管理,能够高效地复用连接。
3. 依赖注入
FastAPI 的 Depends 机制用于依赖注入。get_redis 函数被注入到路由处理函数中,确保每个请求都能获取到 Redis 连接。
4. 路由处理
/set/{key}/{value}路由用于将键值对存储到 Redis 中。/get/{key}路由用于从 Redis 中获取指定键的值。
5. 异步操作
由于 aioredis 是异步库,所有的 Redis 操作都需要使用 await 关键字。FastAPI 本身支持异步操作,因此可以很好地与 aioredis 配合使用。
6. 运行应用
使用 uvicorn 运行 FastAPI 应用,--reload 参数用于开发时自动重载应用。