加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程 > 正文

深入相识一下Redis的内存模子!

发布时间:2019-03-11 18:42:11 所属栏目:编程 来源:编程迷思
导读:一、媒介 Redis是今朝最火爆的内存数据库之一,通过在内存中读写数据,大大进步了读写速率,可以说Redis是实现网站高并发不行或缺的一部门。 我们行使Redis时,会打仗Redis的5种工具范例(字符串、哈希、列表、荟萃、有序荟萃),富厚的范例是Redis相对付M

假设有90000个键值对,每个key的长度是7个字节,每个value的长度也是7个字节(且key和value都不是整数);下面来估算这90000个键值对所占用的空间。在估算占有空间之前,起首可以鉴定字符串范例行使的编码方法:embstr。

90000个键值对占有的内存空间首要可以分为两部门:一部门是90000个dictEntry占有的空间;一部门是键值对所必要的bucket空间。

每个dictEntry占有的空间包罗:

  •  一个dictEntry,24字节,jemalloc会分派32字节的内存块; 
  •  一个key,7字节,以是SDS(key)必要7+9=16个字节,jemalloc会分派16字节的内存块; 
  •  一个redisObject,16字节,jemalloc会分派16字节的内存块; 
  •  一个value,7字节,以是SDS(value)必要7+9=16个字节,jemalloc会分派16字节的内存块; 
  •  综上,一个dictEntry必要32+16+16+16=80个字节; 

bucket空间:bucket数组的巨细为大于90000的最小的2^n,是131072;每个bucket元素为8字节(由于64位体系中指针巨细为8字节)。

因此,可以估算出这90000个键值对占有的内存巨细为:90000*80 + 131072*8 = 8248576。

下面写个措施在redis中验证一下:

运行功效:8247552

理论值与功效值偏差在万分之1.2,对付计较必要几多内存来说,这个精度已经足够了。之以是会存在偏差,是由于在我们插入90000条数据之前redis已分派了必然的bucket空间,而这些bucket空间尚未行使。

作为比拟将key和value的长度由7字节增进到8字节,则对应的SDS变为17个字节,jemalloc会分派32个字节,因此每个dictEntry占用的字节数也由80字节变为112字节。此时估算这90000个键值对占有内存巨细为:90000*112 + 131072*8 = 11128576。

在redis中验证代码如下(只修改插入数据的代码):

深入相识一下Redis的内存模子!

运行功效:11128576;估算精确。

对付字符串范例之外的其他范例,对内存占用的估算要领是相同的,必要团结详细范例的编码方法来确定。

2、优化内存占用

相识redis的内存模子,对优化redis内存占用有很大辅佐。下面先容几种优化场景。

(1)操作jemalloc特征举办优化

上一末节所报告的90000个键值即是一个例子。因为jemalloc分派内存时数值是不持续的,因此key/value字符串变革一个字节,也许会引起占用内存很大的变换;在计划时可以操作这一点。

譬喻,假如key的长度假如是8个字节,则SDS为17字节,jemalloc分派32字节;此时将key长度缩减为7个字节,则SDS为16字节,jemalloc分派16字节;则每个key所占用的空间都可以缩小一半。

(2)行使整型/长整型

假如是整型/长整型,Redis会行使int范例(8字节)存储来取代字符串,可以节减更多空间。因此在可以行使长整型/整型取代字符串的场景下,只管行使长整型/整型。

(3)共享工具

操作共享工具,可以镌汰工具的建设(同时镌汰了redisObject的建设),节减内存空间。今朝redis中的共享工具只包罗10000个整数(0-9999);可以通过调解REDIS_SHARED_INTEGERS参数进步共享工具的个数;譬喻将REDIS_SHARED_INTEGERS调解到20000,则0-19999之间的工具都可以共享。

思量这样一种场景:论坛网站在redis中存储了每个帖子的赏识数,而这些赏识数绝大大都漫衍在0-20000之间,这时辰通过恰当增大REDIS_SHARED_INTEGERS参数,便可以操作共享工具节减内存空间。

(4)停止太过计划

然而必要留意的是,岂论是哪种优化场景,都要思量内存空间与计划伟大度的衡量;而计划伟大度会影响到代码的伟大度、可维护性。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读