# Redis Rules

## 来源

本规则由企业原始规范整理而来，当前仓库以本文件作为可执行口径，不再依赖 `规范合集/` 目录作为生效范围。

## Key 与数据

- key 必须可读、带应用标识，避免冲突；建议控制在 `10-20` 个字符，不包含空格、换行和转义字符。
- 拒绝 `bigkey`：`string` 控制在 `10KB` 内，`hash/list/set/zset` 元素数量不超过 `5000`。
- 默认设置过期时间；没有明确例外时，缓存禁止永久不过期。
- Redis 只存热数据；冷数据留在数据库或归档层。
- 大文本数据超过 `500` 字节时，先压缩再写入 Redis。
- 敏感数据应用必须使用独立 Redis 集群；`T1` 应用如果有资源隔离要求，也优先使用独立集群。

## 命令使用

- 线上禁止 `KEYS` 正则匹配，改用 `SCAN` 系列命令。
- 谨慎全量读取 `HGETALL`、`SMEMBERS`、`ZRANGE` 等 `O(N)` 命令，必须评估 `N` 的规模。
- 根据业务场景选择合适的数据结构，不因为“都能存”就全部塞进 `string` 或 `hash`。
- 批量操作优先 `mget` / `mset`，但要限制单次元素数量，避免阻塞。
- 不建议使用 `select` 多 DB 方案；多业务隔离优先通过独立集群完成。
- 默认禁用或限制 `flushall`、`flushdb` 等高风险命令。

## 场景与连接

- Redis 事务能力较弱，不要把强一致业务流程建立在 Redis 事务上。
- 使用连接池访问 Redis，配置合理的连接、超时和重试参数，避免短连接风暴。
- 适合 Redis 的典型场景是缓存加速和分布式锁；其他用途先评估是否真的需要引入 Redis。
