推荐答案
在 FastAPI 中使用 fastapi-cache
扩展可以通过以下步骤实现:
安装
fastapi-cache
: 首先,你需要安装fastapi-cache
扩展。可以通过 pip 安装:pip install fastapi-cache
导入并配置缓存: 在你的 FastAPI 应用中导入
fastapi-cache
并配置缓存。你可以选择使用内存缓存、Redis 或其他支持的缓存后端。-- -------------------- ---- ------- ---- ------- ------ ------- ---- ------------- ------ ------------ ---- ------------------------------- ------ --------------- --- - --------- ------------------------ ----- --- ---------- ------------------------------------
使用缓存装饰器: 你可以使用
@cached
装饰器来缓存某个路由的响应。例如:from fastapi_cache.decorator import cached @app.get("/items/{item_id}") @cached(expire=60) # 缓存60秒 async def read_item(item_id: int): return {"item_id": item_id, "data": "some_data"}
清除缓存: 如果你需要手动清除缓存,可以使用
FastAPICache.clear()
方法。@app.post("/clear_cache") async def clear_cache(): FastAPICache.clear() return {"message": "Cache cleared"}
本题详细解读
1. fastapi-cache
的作用
fastapi-cache
是一个为 FastAPI 应用提供缓存功能的扩展。它可以帮助你缓存路由的响应,从而减少重复计算或数据库查询,提高应用的性能。
2. 缓存后端的配置
fastapi-cache
支持多种缓存后端,包括内存缓存 (InMemoryBackend
)、Redis (RedisBackend
) 等。你可以根据应用的需求选择合适的缓存后端。
- 内存缓存:适用于小型应用或开发环境,数据存储在内存中,重启应用后缓存会丢失。
- Redis 缓存:适用于生产环境,数据存储在 Redis 中,支持分布式缓存和持久化。
3. @cached
装饰器的参数
@cached
装饰器有几个重要的参数:
expire
:缓存的过期时间,单位为秒。namespace
:缓存的命名空间,用于区分不同的缓存键。key_builder
:自定义缓存键的生成函数。
4. 缓存的清除
在某些情况下,你可能需要手动清除缓存。例如,当数据发生变化时,你可能希望立即清除缓存以确保用户获取到最新的数据。FastAPICache.clear()
方法可以清除所有缓存。
5. 使用场景
fastapi-cache
适用于以下场景:
- 频繁访问但数据变化不频繁的路由。
- 需要减少数据库查询或复杂计算的场景。
- 需要提高应用响应速度的场景。
通过合理使用 fastapi-cache
,你可以显著提升 FastAPI 应用的性能和用户体验。