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

我的redis是4.0版本的


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

教你如何估算redis使用的内存_第1张图片

在这里我们设置一个值

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。

我们来查看结果

教你如何估算redis使用的内存_第2张图片


答案是112,这里是一个设置一个值的结果答案还不是很准确,明天继续测试,大量值的结果

你可能感兴趣的:(Redis相关)