Redis内存优化

字符串优化
字符串预分配每次并不都是翻倍扩容,空间预分配规则如下:

  1. 第一次创建len属性等于数据实际大 小,free等于0,不做预分配。
  2. 修改后如果已有free空间不够且数据小于1M,每次预分配一倍容量。 如原有len=60byte,free=0,再追加60byte,预分配120byte,总占用空间:60byte+60byte+120byte +1byte。
  3. 修改后如果已有free空间不够且数据大于1MB,每次预分配1MB数据。如原有len=30MB, free=0,当再追加100byte,预分配1MB,总占用空间:1MB+100byte+1MB+1byte。

尽量减少字符串频繁修改操作如appendsetrange,改为直接使用set修改字符串,降低预分配带来的内 存浪费和内存碎片化。


字符串重构
字符串重构:指不一定把每份数据作为字符串整体存储,像json这样的数据可以使用hash结构,使用二级结构存储也能帮我们节省内存。


编码优化
1)使用ziplist可以分别作为hashlistzset数据类型实现。
2)使用ziplist编码类型可以大幅降低内存占用。
3)ziplist实现的数据类型相比原生结构,命令操作更加耗时,不同类型耗时排序:list < hash < zset


控制键的数量
对于大量小对象的存储场景,非常适合使用ziplist编码的hash类型控制键的规模来降低内存。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值