Redis使用规范

Olivia的小跟班 Lv3

Redis使用规范

一、键值设计

1. key名设计

  • (1)【建议】: 可读性和可管理性

以业务名(或数据库名)为前缀(防止key冲突),用冒号分隔,比如业务名:表名:id

<业务模块名>:<应用名(ktv模块缺省)>:<业务逻辑含义>:::…

1
2
setting:v:agreement:uid:o_uid_xxx:pid:xxx
ktv:room:roomid: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
2
3
set user:1:name tom
set user:1:age 19
set user:1:favor football

正例:

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:48
  • 链接: https://www.youandgentleness.cn/2023/11/06/Redis使用规范/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论