用途:当用户编写或修改 Redis 相关代码(go-redis、Jedis、redis-py、ioredis 等客户端)时,提供安全与性能规范,防止 Redis 常见的性能与稳定性问题,适用于各语言。
禁止操作:禁止 KEYS * / KEYS pattern,改用 SCAN 游标迭代,因为 KEYS 是 O(N) 阻塞操作,生产环境会导致 Redis 卡死;禁止 FLUSHDB / FLUSHALL,改用按 key 前缀 SCAN + DEL,因全量删除风险极高;禁止无 TTL 的 SET,所有 key 必须设置 TTL,避免内存泄漏。
主要能力:用 SCAN 替代 KEYS,示例包括 Go(go-redis)中通过 cursor 循环 Scan 并处理 keys,Java(Jedis)中用 ScanParams 设置 match 与 count,Python(redis-py)中用 scan_iter;大 key 控制,单个 key 的 value 不超过 10KB,集合类型(List/Set/Hash/ZSet)元素不超过 5000 个,超过时拆分为多个 key;Pipeline 批量操作,多次 Redis 调用应使用 Pipeline 减少网络往返,如 rdb.Pipeline() 收集 Get 后 Exec;所有 key 设置 TTL,如 Set 时传入过期时间。
使用方式:作为技能在用户操作 Redis 代码时自动触发;写代码时按上述规范执行,避免被禁止的调用,采用对应替代写法。
适用场景:涉及 Redis 读写、缓存、令牌存储等使用上述客户端开发或评审代码时。
限制:资料未提供具体限流阈值以外的量化标准、版本兼容细节、各语言完整示例及错误处理说明;具体实现需按实际项目条件确认。