回复
Redis 7内存优化--1.简化dict数据结构
vincent0809
发布于 2022-4-14 15:29
浏览
0收藏
dict是Redis的基础数据结构,Redis的键值、hash|set|zset数据结构均用到了dict。本文介绍了Redis7在dict上的优化,思路清晰简单但效果明显,值得重点关注(降本增效)。
一、优化前的dict结构
7.0之前:dict内部包含了两个dictht
相关代码:
二、Redis 7.0的相关优化
• 去掉privdata
• 去掉dictht,相关元数据放到了dict中。
相关代码变为:
• dictht ht[2]用dictEntry **ht_table[2]代替
• 原来两个dictht的used用unsigned long ht_used[2]代替
• 原来两个dictht的size用signed char ht_size_exp[2]代替,且由8个字节变为1个字节,计算方法如下:
三、效果:
通过数据结构的优化(96->56字节),必然会在hash|set|zset key较多且为小value时,效果更为明显。由于要对单一功能进行测试,所以这里直接使用PR中的测试结果(https://github.com/redis/redis/pull/9228),
(1) 内存优化:提升较为明显
(2) 性能变化:除了get random keys外,其他整体有提升。
四、总结:
这个优化思路清晰,把Redis的基础数据结构dict进行优化,因此会在内存优化上有很大效果,值得学习和使用。
文章转自公众号:Redis开发运维实战
分类
标签
赞
收藏
回复
相关推荐