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

我的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,這裏是一個設置一個值的結果答案還不是很準確,明天繼續測試,大量值的結果
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章