Redis

十月 25, 2026 / shuimqy / 7阅读 / 0评论 / 分类: 后端开发

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

文章链接:http://124.222.238.77:8090//archives/wei-ming-ming-wen-zhang-Wnzaiiqc

版权声明:本博客所有文章除特别声明外,均采用CC BY-NC-SA 4.0 许可协议,转载请注明出处!

评论已关闭!