Redis
Redis 是一种高性能的 Key-Value 存储系统,它将数据存储在内存中,因此读写速度极快,非常适合作为应用层的缓存服务。
在 FastAPI 这样的后端框架中,通常在应用层使用像 Redis 这样的内存数据存储作为缓存。
FastAPI 集成 Redis 的四个步骤
1. 安装 Redis 服务端
首先,需要安装并启动 Redis 服务端。Redis 是一个基于内存的 Key-Value 数据存储系统,负责实际存储缓存数据,并提供数据读写能力。
安装完成后,需要确保 Redis 服务正常运行,并确认连接地址、端口及访问密码等配置。Redis 默认使用 6379 端口。
2. 配置 Redis 客户端
Redis 服务端启动后,需要在 FastAPI 项目中安装 Python 客户端库,以便应用程序与 Redis 进行通信。
对于异步 FastAPI 项目,可以使用 redis 库提供的异步接口:
pip install redis创建 Redis 客户端:
import redis.asyncio as redis
redis_client = redis.from_url(
"redis://localhost:6379/0",
decode_responses=True
)其中,localhost:6379 表示 Redis 服务的地址和端口,/0 表示使用编号为 0 的数据库,decode_responses=True 表示将返回的字符串数据自动解码,方便后续使用。
实际部署时,应根据运行环境配置 Redis 地址、密码等信息,避免将敏感信息直接写入代码。
3. 封装缓存操作
为了避免在业务代码中重复编写 Redis 操作逻辑,可以将缓存读写操作封装为统一的方法,例如设置缓存、获取缓存和删除缓存。
async def set_cache(key: str, value: str, expire: int = 300):
await redis_client.set(key, value, ex=expire)
async def get_cache(key: str):
return await redis_client.get(key)
async def delete_cache(key: str):
await redis_client.delete(key)例如,调用 set_cache("user:1", "张三") 可以将数据写入 Redis,并设置 300 秒的过期时间;调用 get_cache("user:1") 则可以读取对应的数据。
通过统一封装,业务代码无需直接关心底层缓存操作的具体实现,便于后续维护和扩展。
4. 设计缓存策略
完成基础缓存操作后,还需要根据业务场景设计合理的缓存策略。缓存并不是简单地将所有数据放入 Redis,而是需要考虑缓存何时写入、何时读取、何时过期,以及如何处理缓存与数据库之间的数据一致性。
常见的策略包括:
缓存读取:查询数据时,优先从 Redis 获取;缓存未命中时,再查询 MySQL,并将结果写入缓存。
过期时间:为缓存设置合理的 TTL,避免缓存数据长期占用内存。
缓存更新与删除:当数据库中的数据发生变化时,及时更新或删除对应缓存,减少脏数据。
缓存穿透与击穿处理:针对不存在的数据被反复查询、热点缓存集中失效等问题,采取空值缓存、互斥重建等措施。
例如,在用户查询接口中,可以优先读取 Redis 中的用户信息;如果缓存不存在,再查询 MySQL,将查询结果写入 Redis,以减少重复访问数据库的开销。
通过以上四个步骤,FastAPI 项目便具备了基础的 Redis 缓存能力,可以在高频查询场景下减少数据库访问次数,提高接口响应效率。
文章作者:shuimqy
文章链接:https://www.shuimqy.art//archives/wei-ming-ming-wen-zhang-Wnzaiiqc
版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!
评论已关闭!