隻要有可能的話,就盡量使用散列鍵而不是字元串鍵來儲存鍵值對資料,因為散列鍵管理友善、能夠避免鍵名沖突、并且還能夠節約記憶體。
如果采用序列化考慮通用性,請采用json相關的庫進行處理,如果對記憶體大小和速度都很關注的,推薦使用messagepack進行序列化和反序列化
如果需要計數器,請将計數器的key通過天或者小時分割,比如下邊的設計:
需要修改為:
更好的一個設計是采用hash:
各種資料結構及其占用記憶體的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>