Redis使用规范
Redis使用规范
一、键值设计
1. key名设计
- (1)【建议】: 可读性和可管理性
以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id
<业务模块名>:<应用名(ktv模块缺省)>:<业务逻辑含义>:
1 | setting:v:agreement:uid:o_uid_xxx:pid:xxx |
- (2)【强制】:不要包含特殊字符
反例:包含空格、换行、单双引号以及其他转义字符
2. value设计
- (1)【强制】:拒绝bigkey(防止网卡流量、慢查询)
string类型控制在10KB以内,hash、list、set、zset元素个数不要超过5000。
反例:一个包含200万个元素的list。
非字符串的bigkey,不要使用del删除,使用hscan、sscan、zscan方式渐进式删除,同时要注意防止bigkey过期时间自动删除问题(例如一个200万的zset设置1小时过期,会触发del操作,造成阻塞,而且该操作不会不出现在慢查询中(latency可查))
- (2)【推荐】:选择适合的数据类型。
例如:实体类型(要合理控制和使用数据结构内存编码优化配置,例如ziplist,但也要注意节省内存和性能之间的平衡)
反例:
1 | set user:1:name tom |
正例:
1 | hmset user:1 name tom age 19 favor football |
3.【推荐】:控制key的生命周期,redis不是垃圾桶。
建议使用expire设置过期时间(条件允许可以打散过期时间,防止集中过期),不过期的数据重点关注idletime。
- 标题: Redis使用规范
- 作者: Olivia的小跟班
- 创建于 : 2023-11-06 19:03:00
- 更新于 : 2023-11-06 19:03:50
- 链接: https://www.youandgentleness.cn/2023/11/06/Redis使用规范/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论