发布时间:2025-11-03 16:50:49 来源:技术快报 作者:系统运维
在开发高性能 Web 接口时,实战我们常常面临这样的分钟问题:
某些接口数据变化不频繁,但访问量巨大;某些操作(如排行榜、搞定高性用户信息)计算/查询代价高昂;数据库访问压力太大,存方接口响应慢。实战这时候,分钟就轮到我们的搞定高性大杀器——Redis 上场了。b2b供应网
本文带你快速实战:FastAPI 如何优雅接入 Redis 实现缓存与存储!存方

我们以一个用户信息接口为例:根据 user_id 返回用户数据,实战但用户信息不常变动,分钟可以缓存。搞定高性
安装依赖 复制pip install fastapi uvicorn redis1. 初始化 Redis 客户端我们使用官方推荐的存方异步库 redis-py 配合 asyncio 实现异步访问。
复制# redis_client.py import redis.asyncio as redis redis_client = redis.Redis( host="localhost",实战 port=6379, decode_responses=True # 返回字符串而非字节 )1.2.3.4.5.6.7.8. 接口代码示例 复制# main.py from fastapi import FastAPI, HTTPException from redis_client import redis_client import json app = FastAPI() # 模拟数据库 fake_user_db = { "1": {"id": 1, "name": "Alice"}, "2": {"id": 2, "name": "Bob"}, } @app.get("/user/{user_id}") async def get_user(user_id: str): cache_key = f"user:{user_id}" # 尝试从 Redis 获取缓存 cached_data = await redis_client.get(cache_key) if cached_data: return {"source": "redis", "data": json.loads(cached_data)} # 模拟从数据库查询 user = fake_user_db.get(user_id) if not user: raise HTTPException(status_code=404, detail="用户不存在") # 缓存结果,设置过期时间 60 秒 await redis_client.set(cache_key,分钟 json.dumps(user), ex=60) return {"source": "db", "data": user}1.2.3.4.5.6.7.8.9.10.11.12.13.14.15.16.17.18.19.20.21.22.23.24.25.26.27.28.29.30.31.32.33.说明:
Redis 作为缓存中间层:查询接口先查 Redis,IT技术网再查数据库缓存数据使用 JSON 序列化存储通过 ex=60 设置缓存过期时间为 60 秒Redis 的搞定高性应用价值降低数据库访问压力提升接口响应速度(缓存命中几乎毫秒级)灵活设置过期时间,控制数据新鲜度衍生应用场景用户会话 token 存储短信验证码防刷排行榜数据缓存秒杀库存预扣减实现消息队列、分布式锁等小结Redis 作为缓存方案在 FastAPI 项目中非常简单易用,也非常高效。它能帮助你:
提升接口性能;减轻数据库压力;实现更多灵活应用场景(例如登录状态、验证码、计数器等)。服务器租用随便看看