键值设计
1.key设计
可读性
比如:trade:order:1(业务名:表名:id)
简洁性,保证语义的前提下
user:{uid}:friends:messages:{mid} 简化为 u:{uid}:fr:m:{mid}
不要包含特殊字符
空格,换行,单双引号,其他转义字符等
2.value设计
1.避免bigkey(导致慢查询,网络卡顿)
字符串value超过10kb(最大512M)
非字符串元素超过5000个(最多2^32-1大约40亿)
危害
非字符串的bigkey,del删除会造成网络阻塞,使用hscan、sscan、zscan方式渐进式删除
假设一个bigkey为1MB,客户端每秒访问量为1000,那么每秒产生1000MB的流量
设置了过期时间的bigkey会触发del操作,阻塞redis(使用Redis 4.0的过期异步删除lazyfree-lazy-expire yes)
优化
2.选择合适的数据类型
3.key设置过期时间