redis-py:Python 连接 Redis 的标准答案
redis-py:Python 连接 Redis 的标准答案
redis-py 在 GitHub 上已经拿到 13,554 Star 了。
这是 Redis 官方维护的 Python 客户端库,从 2012 年到现在持续迭代了十几年。如果你用 Python 写后端,项目里但凡用到 Redis,大概率装的第一个依赖就是它。

1、 这个库是干嘛的
一句话:给 Python 程序提供一个操作 Redis 的接口。
不管是简单的键值存取、带 TTL 的缓存写入、复杂的管道批处理,还是发布订阅模式、全文搜索,redis-py 都封装好了。API 设计跟 Redis 原生命令一一对应,你会用 Redis 命令行,就基本会用这个库。HSET 对应 r.hset(),ZADD 对应 r.zadd(),学习成本约等于零。
2、 为什么要用它
Python 生态里连接 Redis 的选择其实不多。redis-py 是官方维护的,社区最活跃,文档最齐全。几个让人省心的点:
连接池自动管理。不用操心连接的创建和回收,默认就用连接池,高并发场景下表现稳定。你可以在应用启动时创建一个全局连接池,后面的 Redis 实例都复用这一池连接。
支持异步。从 4.2 版本开始原生支持 asyncio,异步代码写起来跟同步版接口一样顺手。如果项目是 FastAPI 或者用 async/await 写的,直接切到 redis.asyncio.Redis 就行。
集群模式内置。Redis Cluster 和 Active-Active 多数据库故障转移,开箱即用。多数据库客户端会持续监控各个节点的健康状态,出故障自动切到备用节点,主节点恢复了再切回来,业务层完全无感。
RESP3 协议兼容。从 8.0 版本开始默认用 RESP3 传输,同时通过 legacy response 模式保持对旧代码的兼容。新项目可以关掉这个模式,拿到更统一的数据结构,不用区分 RESP2 和 RESP3 的返回格式差异。
3、 有什么高级功能

Pipeline 管道。把多个命令打包成一个批次发送,一次网络往返拿回所有结果。高延迟网络下性能提升非常明显,几十个命令一趟完成。
PubSub 发布订阅。消息队列的基础设施。订阅频道、接收推送、模式匹配订阅,接口都封装得很干净,几行代码就能搭一个轻量级消息系统。
Search & Query 全文搜索。Redis Stack 的搜索能力也封装好了,建索引、全文检索、聚合查询都在 r.ft() 下。默认走 DIALECT 2 查询方言,避免旧版方言的查询差异问题。
多数据库故障转移。用在 Redis Enterprise 的 Active-Active 部署场景,自动做健康检查,检测到故障自动切换到下一个健康节点,上层逻辑不用感知底层切换。
4、 安装和使用
pip install redis
追求解析性能可以加上 hiredis 这个 C 语言写的响应解析器:
pip install "redis[hiredis]"
基础使用四行代码跑通:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('foo', 'bar')
r.get('foo') # b'bar'
5、 适合哪些人用
- Python 后端开发者,项目里用了 Redis 做缓存、队列或会话管理
- 用了 Redis Stack 的搜索和查询功能,想在 Python 里直接建索引、查数据
- 搭建 Redis Cluster 集群,需要客户端原生支持故障转移和自动路由的场景
在 Python 里直接建索引、查数据
- 搭建 Redis Cluster 集群,需要客户端原生支持故障转移和自动路由的场景
更多推荐

所有评论(0)