Redis學習--HGET和MGET測試


性能測試

同一門課程,會拆分為多個小班進行授課,每個小班會對於一個評分,課程負責人需要獲取所有小班的評分並進行排名。
假設100個課程,每個課程有100個小班,模擬100個並發請求課程所有小班評分數據,每個並發循環30000次。

使用阿里雲Redis進行壓測,實例規格為2G集群版(2節點)

方案1:將每個課程下每個小班的數據使用單獨hash鍵來存放,按照課程下每個小班循環獲取(HGETALL 1 KEY)

峰值QPS: 52.1K/s
峰值CPU: 34.0%
峰值流量: 1.1MB/s
執行耗時:30000*100*100/52100=5758秒

方案2:將每個課程下所有小班的數據使用一個hash鍵來存放,按照課程批量獲取所有小班數據(HGETALL 1 KEY)

峰值QPS: 14.7K/s
峰值CPU: 22.1%
峰值流量: 25MB/s
執行耗時:30000*100/14700=204秒

方案3:將每個小班的評分使用string方式存儲,按照課程下每個小班循環獲取(GET 1 KEY)

峰值QPS: 52.3k/s
峰值CPU: 33.1%
峰值流量: 2.55MB/s
執行耗時:30000*100*100/52300=5736秒

方案4:將每個小班的評分使用string方式存儲,按照課程下所有小班進行批量獲取(MGET 100 KEY)

峰值QPS: 34.5k/s
峰值CPU: 66.7%
峰值流量: 61.8MB/s
執行耗時:30000*100/34500=87秒

性能分析

  • 使用HGETALL請求包含1個filed的鍵和請求包含100個filed的鍵的CPU消耗比約為1比2.3,但由於請求次數降低100倍,因此性能能提升約43倍。
  • 使用MGET批量請求100個鍵和使用GET請求1個鍵的CPU消耗比約為3.1比1,但由於請求次數降低100倍,因此性能約提升約30倍。

PS: 如果針對排名問題,優先推薦使用SORTED SET來處理


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM