在进行了第一次Redis 内存优化后,并没有达到项目最终的要求,于是再次针对内存的存储模型维度上进行内存优化
第一次内存优化过程:第一次优化过程
通过第一次测试结果,已经优化内存是原先的45%,但是由于项目指标问题以及项目老板的要求,只能在进行数据压缩,故此经过查询,目前我们项目中value 值存储的是 HashCode值 ,也就是一个Int类型的值,理论Int 值在Redis 只占8个字节,但是实际测试下来并不是这样,故此此处进行进一步验证。
- 初始化Redis 信息
image.png
图中的内存为Redis 内存空的时间的内存:847.33K
1. 单个key 值内存占用
压缩前:
key : 0:1:100186648:101:123038565 value : {expireTime:253402271999000,value:"3.613026269891794-0.7847088936607955"}
单个key 内存占用如下图:单个key 占用 79K
image.png
压缩后:
image.pngkey : 01:y+sTn:wW:icvPW value : 2014413527
- 单个key value 压缩对比
image.png
- 10万key 测试
- 优化前:
image.png
优化前,10万 key占用内存:18.67M
- 优化后:
image.png
优化后,10万 key占用内存:9.66M
分析可知:能够优化达到: 48%
- 先按照老的存储方式进行存储 100万key 内存占用情况:(key-value )
image.pngkey : 0:1:100186648:101:123038565 value: {expireTime:253402271999000,value:"3.613026269891794-0.7847088936607955"}
测试结果如上图:100万数据 内存占用:200.12M
- value 值按照byte进行存储 100万数据 内存占用
image.png
压缩后:内存占用:92.97M
分析可知:100万优化:最终优化 53%
网友评论