文章

REDIS开发规范

### key名规范
- key名禁止包含特殊字符(包含空格、换行、单双引号以及其他转义字符)
- key名保证可读性和可管理性的前提下尽量简洁(key本质也是string,也会占用内存)

可读性和可管理性可以按业务区分,用冒号分隔。比如:业务名:表名:id(ads:sp_campaign:1)


### 禁止bigkey存在(防止网卡流量、慢查询)

string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000


### 合理使用数据类型

Redis 提供了丰富的数据类型,string、hash、list、set、zset、bitmap、hyperloglog、geo、stream
要合理控制和使用数据结构内存编码优化配置


### 设置过期时间

Redis 不是垃圾桶,合理设置过期时间,防止雪崩


### 禁止某些命令

禁用命令:keys、flushall、flushdb等(会造成服务阻塞,导致服务不可用)


### 批量操作控制数量

hgetall、lrange、smembers、zrange、sinter等并非不能使用,但是需要明确N的值(N<100)
有遍历的需求可以使用hscan、sscan、zscan代替


### Redis的事务功能较弱(不支持回滚),不建议使用
License:  CC BY 4.0