rediskey值內存消耗以及性能影響

目錄

一、redis key數量爲1千萬時。

二、redis key數量爲1千5百萬時。

三、redis key數量爲一千五百萬時壓測

四、使用map將key值打散存儲,小key爲1千五百萬

五、使用hset存儲打散爲256個key

六、進行hget的壓力測試

七、總結 


一、redis key數量爲1千萬時。

存儲value爲"0",比較小。如果value較大,則存儲內存會增多

redis key數量爲一千萬時,使用了865M的內存。

# Keyspace
db0:keys=11100111,expires=0,avg_ttl=0
內存使用情況
# Memory
used_memory:907730088
used_memory_human:865.68M
used_memory_rss:979476480
used_memory_rss_human:934.10M
used_memory_peak:1258244232
used_memory_peak_human:1.17G
used_memory_peak_perc:72.14%
used_memory_overhead:580102896
used_memory_startup:765664
used_memory_dataset:327627192
used_memory_dataset_perc:36.12%
total_system_memory:8365256704
total_system_memory_human:7.79G
used_memory_lua:37888
used_memory_lua_human:37.00K

二、redis key數量爲1千5百萬時。

redis key數量爲一千五百萬時,使用了1.13G的內存。

 

# Keyspace
db0:keys=15100031,expires=0,avg_ttl=0
# Memory
used_memory:1211733288
used_memory_human:1.13G
used_memory_rss:1247817728
used_memory_rss_human:1.16G
used_memory_peak:1258244232
used_memory_peak_human:1.17G
used_memory_peak_perc:96.30%
used_memory_overhead:740104496
used_memory_startup:765664
used_memory_dataset:471628792
used_memory_dataset_perc:38.95%
total_system_memory:8365256704
total_system_memory_human:7.79G
used_memory_lua:37888
used_memory_lua_human:37.00K

 

三、redis key數量爲一千五百萬時壓測


redis-benchmark -h 127.0.0.1 -p 6379 -c 1000 -n 10000 -t get -q
GET: 34364.26 requests per second

四、使用map將key值打散存儲,小key爲1千五百萬

使用hset存儲打散爲1024個key時,存儲大小爲921M,比直接存儲節省了200M。


# Memory
used_memory:966758968
used_memory_human:921.97M
used_memory_rss:1002913792
used_memory_rss_human:956.45M
used_memory_peak:1749456304
used_memory_peak_human:1.63G
used_memory_peak_perc:55.26%
used_memory_overhead:1929880
used_memory_startup:765664
used_memory_dataset:964829088
used_memory_dataset_perc:99.88%
total_system_memory:8365256704
total_system_memory_human:7.79G
used_memory_lua:37888
used_memory_lua_human:37.00K


# Keyspace
db0:keys=1024,expires=0,avg_ttl=0

 

 

五、使用hset存儲打散爲256個key

存儲大小爲1.09G,比直接存儲小了80M。


used_memory:1170356864
used_memory_human:1.09G
used_memory_rss:1190223872
used_memory_rss_human:1.11G
used_memory_peak:1749456304
used_memory_peak_human:1.63G
used_memory_peak_perc:66.90%
used_memory_overhead:33759246
used_memory_startup:765664
used_memory_dataset:1136597618
used_memory_dataset_perc:97.18%
total_system_memory:8365256704
total_system_memory_human:7.79G

六、進行hget的壓力測試

 redis-benchmark -h 127.0.0.1  -p 6379 -c 1000 -n 10000 -t hget myhash rand_int rand_int rand_int 
====== myhash rand_int rand_int rand_int ======
  10000 requests completed in 0.22 seconds
  1000 parallel clients
  3 bytes payload
  keep alive: 1

46511.63 requests per second

七、總結 

可見,當存儲量特別大的時候,可以將key進行hash分散處理,可以減少存儲內存。並且當key的數量很大的時候,redis取值性能還是很高的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章