用途:Redis 是内存数据结构存储,可用作数据库、缓存和消息代理。本技能面向 redis-py v8.0 的使用,覆盖同步与异步客户端、连接池、核心命令、RESP3、Redis Stack 模块、管道与事务,以及生产环境注意事项。
主要能力:支持字符串、哈希、列表、集合、有序集合等核心命令;提供连接池配置(max_connections、超时、重试);redis-py v8.0 要求 Python 3.10+,默认使用 RESP3,异步 API 位于 redis.asyncio 模块。Redis Stack 模块包括 Search、JSON、TimeSeries。管道用于批量往返,WATCH/MULTI/EXEC 提供乐观锁事务,Lua 脚本提供真正原子性。
使用方式:安装 pip install redis。同步客户端用 redis.Redis(host='localhost', port=6379, db=0),异步用 import redis.asyncio as redis 并 await 调用,关闭连接分别用 r.close() 与 await r.aclose()。连接池通过 redis.ConnectionPool 创建后传给客户端。RESP3 可用 protocol=3 显式请求,但代理或托管服务可能降级为 RESP2,使用前应验证。
适用场景:缓存、会话、限流、发布订阅、排行榜、计数器,以及需要 Redis Stack 搜索、JSON 文档或时序数据的场景。
限制与注意:Redis 单线程处理命令,KEYS、大哈希 HGETALL 等阻塞命令会拖慢所有客户端,应改用 SCAN;缓存键应设置 TTL,避免内存无限增长;maxmemory 淘汰策略配置不当会静默丢键;复制场景下写后立即读副本可能读到旧值,可用 WAIT 确认;缓存击穿可用分布式锁或抖动 TTL 缓解。并非所有场景都适合 Redis:简单查询可用数据库缓存,需可靠投递的任务队列宜用专用消息代理,多区域强一致写入需另选方案。Django 集成细节见 references/django-integration.md。