规范 | 说明 |
---|---|
设计合理的key中value的大小,推荐小于10KB | 过大时的value会引起数据倾斜、热点key、实例流量、或者cpu性能被占满等问题。 |
设计合理的key名称和长度 | key名称:1)使用可读的字符串作为key名,使用key名拼接库、表、字段名推荐使用英文冒号“:”分割,如project:user:001;2)在能完整描述业务的前提下,尽量简化key长度,如userName简化为u;3)大括号{}为redis的hash tag语义,如果是集群架构,key名称需要正确地使用大括号,避免引发数据倾斜。key长度:key名长度不超过128字节(越短越好) |
对于支持key的复杂数据结构,应避免一个key中包含过多的子key(推荐低于1000) | 有些命令的(例如hgetall)的时间复杂度于key中子key的数量相关,如果频繁执行时间复杂度为O(N)及以上的命令,key中的子key数量过多,容易引发慢请求、数据倾斜或热key问题 |
使用串行化方法将value转变为可读结构 | 编程语言的字节码睡着版本可能会变化,如果存储裸对象(例如java object、c#对象)会导致整个软件栈升级困难 |
字符串长度小于39字节 | 在高并发写入场景下,条件允许的下,建议字符串长度控制在39字节以内,减少创建redisObject内存分配次数,提高性能。 |
ziplist长度不要超过1000,每个元素大小控制在51 2字节以内 | 性能要求比价高的场景使用ziplist,建议长度不要超过1000,每个元素大小控制在512字节以内 |
Redis key设计规范
于 2023-09-03 20:13:00 首次发布