用途:当用户编写或修改 Redis 相关代码(go-redis、Jedis、redis-py、ioredis)时触发,提供跨语言的 Redis 安全与性能规范,防止常见性能与稳定性问题。
主要能力与规范:
- 禁止使用 KEYS * / KEYS pattern,改用 SCAN 游标迭代,因为 KEYS 是 O(N) 阻塞操作,生产环境可能导致 Redis 卡死。
- 禁止 FLUSHDB / FLUSHALL,改为按 key 前缀 SCAN + DEL,全量删除风险极高。
- 所有 key 必须设置 TTL,避免内存泄漏,禁止无 TTL 的 SET。
- 大 key 控制:单个 key 的 value 不超过 10KB;集合类型(List/Set/Hash/ZSet)元素不超过 5000 个,超过时拆分为多个 key。
- 多次 Redis 调用应使用 Pipeline 减少网络往返。
使用方式:技能在检测到相关 Redis 客户端代码时自动触发,按上述规范给出替代写法。示例包括 Go 用 rdb.Scan 循环、Java 用 ScanParams 与 jedis.scan、Python 用 r.scan_iter(match="user:*", count=100),以及 Pipeline 批量 Get 和带 TTL 的 Set。
适用场景:使用 Redis 的应用开发与代码审查,尤其是涉及批量 key 操作、缓存写入、集合数据存储的场景。
限制:资料未提供安装命令、配置方式、支持的客户端版本范围及具体阈值可配置性,暂未提供。