教你如何估算redis使用的内存

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_34292044/article/details/80543949

我的redis是4.0版本的


首先是一个空的redis的在机器中的内存使用情况,这个根据机器不同而定


在这里我们设置一个值

set name xiaoming

name的长度为4,xiaoming长度为8

每个dictEntry占据的空间包括:

  1. 一个dictEntry,24字节,jemalloc会分配32字节的内存块

  2. 一个key,4字节,所以SDS(key)需要4+9=13个字节,jemalloc会分配16字节的内存块

  3. 一个redisObject,16字节,jemalloc会分配16字节的内存块

  4. 一个value,8字节,所以SDS(value)需要8+9=17个字节,jemalloc会分配32字节的内存块

  5. 综上,一个dictEntry需要32+32+16+32=112个字节。


bucket空间:bucket数组的大小为大于1的最小的2^n,是2;每个bucket元素为8字节(因为64位系统中指针大小为8字节)。


因此,可以估算出这90000个键值对占据的内存大小为:112 + 16 = 128。

我们来查看结果



答案是112,这里是一个设置一个值的结果答案还不是很准确,明天继续测试,大量值的结果
阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页