我基于网络上的资料整理、添加的Redis开发规范。欢迎交流指导:)
转载请注明出处
一、键值设计
1.key名设计
【强制】以英文字母开头,命名中只能出现小写字母、数字、英文点号.和英文半角冒号:
【强制】不该使用含义不清的key以及特别长的key名
【强制】禁止使用Redis保留字命名key
【强制】命名规范:业务模块名:业务逻辑含义:其他
1)业务模块名:具体的功能模块
2)业务逻辑含义段:
【强制】不同业务逻辑含义使用英文半角冒号(:)分割,
【强制】同一业务逻辑含义段的单词之间使用英文半角点号 (.)分割,用来表示一个完整的语义
示例: user:basic.info:1 注:1是用户id
【推荐】简洁性
保证语义的前提下,控制key的长度,当key较多时,内存占用也不容忽视,例如:
user:{uid}:friends:messages:{mid}简化为u:{uid}:fr:m:{mid}
2.value设计
【强制】拒绝bigkey
string类型控制在10KB以内,hash、list、set、zset元素个数不要超5000。以防止网卡流量、慢查询。反例:一个包含200万个元素的list。非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞。)
【强制】禁止在Redis中存储敏感的明文数据
【推荐】选择适合的数据类型
例如:
反例:
set user:1:name tom
set user:1:age 19
set user:1:favor football
正例:
hmset user:1 name tom age 19 favor football
3.【强制】关于过期时间
Redis key一定要设置过期时间。要跟自己的业务场景,需要对key设置合理的过期时间。可以在写入key时,就要追加过期时间;也可