美文网首页
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内存优化,读书笔记整理

    一直想着自己部署的Redis集群,只是简单的部署,肯定还有很大的优化空间。万一哪天用户暴增,出现了问题,我是不是得...

  • Redis内存优化

    参考来源 Redis的内存优化 Redis所有的数据都在内存中,而内存又是非常宝贵的资源。对于如何优化内存使用一直...

  • 一张图搞定redis内存优化及配置

    Redis优化及配置 Redis所有的数据都在内存中,而内存又是非常宝贵的资源。常用的内存优化方案有如下几部分:一...

  • Redis内存优化一

    这一章我们来说一说redis内存优化方面的内容 redis内存优化 主要有两方面 1. 针对键key的优化 ...

  • Redis实践(十六)-内存管理

    1 内存优化介绍 2 Redis内存消耗 3 客户端缓冲区

  • 第8章 理解内存

    理解Redis内存消耗,管理和优化。 1. 内存消耗 1.1 内存使用统计 通过info memory命令获取内存...

  • Redis内存优化

    Redis存储的数据都使用redisobject来封装,包括string、hash、list、set、zset在内...

  • Redis内存优化

    Redis 内存优化 官网文档 翻译 使用特殊编码方式存储聚合数据类型 从 Redis 2.2 开始,很多数据结构...

  • Redis内存优化

    Redis内存优化 1.内存消耗 1.1内存使用统计 属性名属性说明used_memoryRedis 分配器分配的...

  • Redis内存优化

    小的聚合类型数据的特殊编码处理 Redis2.2版本及以后,存储集合数据的时候会采用内存压缩技术,以使用更少的内存...

网友评论

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

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