redis key-value的设计原则

key设计建议:

  1. 可读性和可管理性管理(以业务名(或数据库名)为前缀,防止key冲突,用 冒号分割,如表名:id, tbl_person:1
  2. 简洁性,保证语意前提下,控制key的长度,key如果太长,太多,内存占用严重
  3. 不要包含特殊字符:空格,换行,单双引号。

redis key会使用 embstr编码进行压缩!!

在这里插入图片描述
在这里插入图片描述
object key 命令 可以查看对应串的编码

在这里插入图片描述
如果 value过大过长, 会转为 raw编码(低于 39个字节,使用 embstr), 这样会进行特定的内存优化,如果是 int的话,会优化为 int

用 embstr ,可以节省一定的内存开销

value设计原则:

  1. 拒绝bigkey
  2. 选择合适的数据结构
  3. 过期设计

强制规范:

  • string类型控制在10KB以内
  • hash,list,set,zset元素个数不要超过5000
  • 反例:一个包含几百万个元素的list,hash等,一个巨大的json字符串

bigkey 的危害

  1. 网络阻塞
  2. redis阻塞
  3. 集群节点数据不均衡
  4. 频繁序列化:应用服务器CPU消耗

在这里插入图片描述

如何发现 bigKey

  1. 程序应用报异常日志
  2. redis-cli --bigkeys
  3. debug object 的方法
  4. 网络流量监控,客户端监控

redis 周期数据设置过期时间,object idle time 可以查找 key-value

过期时间不宜集中: 缓存穿透和雪崩等问题(具备例子,你应该 jedis.set(k, v, time+ randomTime() ) )

要加一个随机值,打散 过期时间(使得时间尽量的均匀),防止缓存雪崩

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值