美文网首页
Redis内存优化,读书笔记整理

Redis内存优化,读书笔记整理

作者: 程就人生 | 来源:发表于2022-07-19 20:55 被阅读0次

    一直想着自己部署的Redis集群,只是简单的部署,肯定还有很大的优化空间。万一哪天用户暴增,出现了问题,我是不是得有几个备选方案?碰巧看了几篇Redis内存优化的文章,它们给了我很大的启发,在此用自己的语言整理一下,分享给大家。

    Redis内存优化的目的:使用更少的空间存储更多的数据。

    优化建议如下所示:

    1. 键值对优化

    1)减少键值key的长度,键名尽量精简,能缩写的缩写;

    key规则: 业务名:表名:ID;

    key使用embstr编码:开辟一块连续分配的内存(字符串长度小于等于44 字节);

    2)value进行数据压缩;

    3)value使用性能更好的占比更小的序列化方式;

    2.小数据集合的编码优化

    采用bitmap存储

    setbit 前缀 key value

    getbit 前缀 key

    bitcount 前缀 // 统计

    参考:https://mp.weixin.qq.com/s/ejlPNOuTu0owvsVdCwKPvw

    3.使用对象共享池

    redis在启动的时候会生成0-9999个整数对象池供对象复用,减少内存占用;

    在采用ziplist 编码、设置maxmemory限制时失效;

    4.使用 Bit 比特位或 byte 级别操作;

    bitmap是一个以bit为单位的数组,数组的每个单元只能存储0和1,数组的下标是offset偏移量;

    5.使用hash类型优化;

    value能用hash的不用string;

    6.内存碎片优化;

    在redis.conf中开启activedefrag yes 相关配置;

    7.使用32位的redis;

    细说内存碎片优化

    1. 在redis客户端通过命令 info memory 查看内存信息,需要关注以下几个信息:
    # redis分配的内存总量单位为b
    used_memory: 
    # redis分配的内存总量单位为M
    used_memory_human: 
    # redis向操作系统申请的内存总量单位为b
    used_memory_rss: 
    # redis向操作系统申请的内存总量单位为M
    used_memory_rss_human:
    # 内存碎片率
    mem_fragmentation_ratio:
    # 内存分配器
    mem_allocator:jemalloc-5.1.0 
    

    mem_fragmentation_ratio计算公式为:used_memory_rss/used_memory该值过高时考虑清理内存;

    1. 打开 redis.conf 配置文件,需要开启以下属性,默认都是关闭的;
    # 开启自动清理内存碎片
    activedefrag yes 
    # 内存碎片的字节数达到100M时开始清理
    active-defrag-ignore-bytes 100mb 
    # 内存碎片空间占操作系统分配给redis的总空间比例达到 10% 时开始清理
    active-defrag-threshold-lower 10 
    # 两个条件同时满足会触发内存碎片清理,当有一个不满足则停止清理
    # active-defrag-ignore-bytes与active-defrag-threshold-lower
    # 内存碎片超过 100%,则尽最大努力整理
    active-defrag-threshold-upper 100
    # 自动清理过程所用CPU时间的比例不低于1%,保证能正常清理
    active-defrag-cycle-min 1
    # 自动清理过程所用CPU时间的比例不高于25%,超过25%停止清理,避免redis主线程阻塞
    active-defrag-cycle-max 25
    # 自动清理过程中长度小于1000的set/hash/zset/list才会进行自动清理
    active-defrag-max-scan-fields 1000
    

    注意点:内存碎片优化,只支持redis4.0以上版本,windows安装的redis 3点几版本是不支持的。
    参考链接:https://www.csdn.net/tags/Mtzakg5sNDkxMDQtYmxvZwO0O0OO0O0O.html

    本文参考:https://mp.weixin.qq.com/s/HzBLqWaJyadnTsA-bB0ivg

    最后总结
    通过以上三篇文章的学习,学到了7个关于Redis内存优化的方法。第1、5点是关于键值对存储的优化,想办法减少数据存储的数量;第2、3、4点和业务逻辑有关,是否有这方面的需要,如果有可以这样存储。第6点是开启内存自动清理的优化。第7点是在redis存储结构上做整体调整。有了这几点优化方针做指导,能优化赶紧做起来吧。

    相关文章

      网友评论

          本文标题:Redis内存优化,读书笔记整理

          本文链接:https://www.haomeiwen.com/subject/fiusirtx.html