Python Redis客户端 AI应用开发完整指南
基于Redis官方文档:https://redis.io/docs/latest/develop/clients/redis-py/
适配LLM对话系统、RAG向量检索、模型推理服务等AI后端Python业务场景
目录
- 环境安装
- 客户端基础连接配置(AI项目专用模板)
- 常用数据结构 + AI落地场景代码示例
- 连接池高并发优化(线上AI服务必备)
- 过期时间控制(会话/推理结果自动清理)
- AI开发典型业务选型对照表
- 线上最佳实践
- 完整可运行Demo代码
1. 环境安装
1.1 基础安装
bash
pip install redis
1.2 高性能版本(推荐 AI 高并发接口)
搭载 hiredis C 解析器,大批量对话缓存、批量向量查询场景自动提速,无需改代码:
bash
pip install redis[hiredis]
1.3 补充说明
Python3.12+ 移除 distutils,直接升级最新版 redis-py 即可正常安装。
如需 ORM 对象映射管理结构化 AI 实体,可选用官方配套 RedisOM for Python。
2.客户端基础连接配置
标准连接模板
开启 decode_responses=True 自动 bytes 转字符串,AI 文本、对话历史无需手动解码:
python
import redis
# 初始化客户端
r = redis.Redis(
host="127.0.0.1",
port=6379,
password="your_redis_pwd", # 有密码就填写,无密码删除该行
db=0,
decode_responses=True
)
# 连通性测试
print(r.ping())
单次执行后关闭连接
python
r.close()
3.常用数据结构 & AI 场景代码示例
3.1 String 字符串
python
# 写入
r.set("prompt:summary", "请精简总结下文内容,控制在100字以内")
# 读取
prompt_template = r.get("prompt:summary")
print(prompt_template)
3.2 Hash 哈希
适用场景:存储单用户完整对话会话、用户画像、角色设定、多字段模型配置。
python
# 写入用户会话多字段
r.hset(
"chat_session:user_10086",
mapping={
"model": "Qwen-7B",
"history": "用户:你好\nAI:你好,有什么可以帮助你?",
"role_id": "assistant_code",
"create_time": "2026-06-14"
}
)
# 读取全部会话信息
session_info = r.hgetall("chat_session:user_10086")
print(session_info)
3.3 List 列表
适用场景:按顺序存储多轮对话历史、批量推理任务队列。
python
# 追加一轮用户提问
r.rpush("chat_list:user_10086", "帮我介绍Redis在RAG里的用法")
# 获取最新5轮对话
dialogue = r.lrange("chat_list:user_10086", -5, -1)
print(dialogue)
3.4 Set / Sorted Set
Set:去重存储用户访问 ID、已检索过的文档 ID
ZSet:按相似度分值排序 RAG 召回文档、会话热度排序
4. 连接池(线上 AI 服务强制使用)
常驻 FastAPI/Flask AI 接口服务,频繁新建销毁连接会产生大量开销,统一复用连接池:
python
import redis
pool = redis.ConnectionPool(
host="127.0.0.1",
port=6379,
password="your_redis_pwd",
db=0,
decode_responses=True,
max_connections=20
)
# 多个接口共用同一个连接池
client1 = redis.Redis(connection_pool=pool)
client2 = redis.Redis(connection_pool=pool)
5. 过期时间控制(AI 会话自动过期)
python
# 设置key 30分钟过期
r.setex("temp_llm_result:task_001", 30*60, "大模型返回内容...")
# Hash整体过期
r.expire("chat_session:user_10086", 30*60)
6. AI 业务场景选型对照表
| Redis 结构 | redis-py 核心 API | AI 落地场景 |
|---|---|---|
| String | set/get/setex | Prompt 模板、推理结果缓存、密钥配置 |
| Hash | hset/hgetall | 用户完整会话、角色配置、用户画像 |
| List | lpush/rpush/lrange | 有序多轮对话、推理任务队列 |
| Sorted Set | zadd/zrange | RAG 文档相似度排序、热点会话排序 |
7. 线上 AI 开发最佳实践
- 一律开启 decode_responses=True,规避文本字节编码异常;
- 并发接口服务必须使用连接池,禁止每次请求新建 Redis 实例;
- 临时会话、推理缓存统一设置过期时间,避免 Redis 内存溢出;
- 高吞吐 RAG、批量推理场景安装 hiredis 提升解析速度;
- Key 统一设计命名规范:业务类型:用户ID:标识,方便批量管理;
- 敏感密钥不要硬编码在代码,使用环境变量注入 Redis 连接参数。
8. 完整可运行整合 Demo
python
import redis
# 初始化客户端
r = redis.Redis(
host="127.0.0.1",
port=6379,
db=0,
decode_responses=True
)
# 1. 缓存Prompt模板
r.set("prompt:rag_default", "基于检索到的上下文回答用户问题,不要编造信息")
print("Prompt模板:", r.get("prompt:rag_default"))
# 2. 存储用户对话会话
r.hset(
"session:u001",
mapping={
"llm": "Llama3",
"chat_history": "用户:RAG是什么?\nAI:检索增强生成技术...",
"expire_min": "60"
}
)
print("用户会话:", r.hgetall("session:u001"))
# 3. 推理结果30分钟过期
r.setex("infer_result:task_99", 1800, "模型输出回答内容")
print("推理缓存:", r.get("infer_result:task_99"))
r.close()