天天看點

Redis開發運維實踐開發設計規範之記憶體考慮4.4 記憶體考慮

隻要有可能的話,就盡量使用散列鍵而不是字元串鍵來儲存鍵值對資料,因為散列鍵管理友善、能夠避免鍵名沖突、并且還能夠節約記憶體。

如果采用序列化考慮通用性,請采用json相關的庫進行處理,如果對記憶體大小和速度都很關注的,推薦使用messagepack進行序列化和反序列化

如果需要計數器,請将計數器的key通過天或者小時分割,比如下邊的設計:

Redis開發運維實踐開發設計規範之記憶體考慮4.4 記憶體考慮

需要修改為:

Redis開發運維實踐開發設計規範之記憶體考慮4.4 記憶體考慮

更好的一個設計是采用hash:

Redis開發運維實踐開發設計規範之記憶體考慮4.4 記憶體考慮

各種資料結構及其占用記憶體的benchmark測試

set個數

每個set的元素總數

記憶體占用

key大小

value大小

100

1.88m

7

36

1000

10.75m

10000

111.12m

11.59m

8

100.35m

1.08g

108.71m

9

996.23m

zset個數

每個zset的元素總數

1.62m

49

15.91m

162.06m

8.71m

151.87m

1.58g

79.83m

10

1.48g

hash個數

每個hash的元素總數

1.63m

6.29m

156.91m

55.59m

1.52g

548.58m

list個數

每個list的元素總數

1.23m

10.00m

92.40m

4.83m

92.52m

916.47m

40.76m

917.69m

string個數

846.79k

13

966.29k

2.16m

100000

130.88m

<b></b>

<b>redis開發運維實踐指南</b><b>本文為《redis開發運維實踐指南》内容,該書作者為黃鵬程,已授權雲栖社群轉載。</b>

繼續閱讀