在進行了第一次Redis 內(nèi)存優(yōu)化后吁讨,并沒有達到項目最終的要求想括,于是再次針對內(nèi)存的存儲模型維度上進行內(nèi)存優(yōu)化
第一次內(nèi)存優(yōu)化過程:第一次優(yōu)化過程
通過第一次測試結(jié)果,已經(jīng)優(yōu)化內(nèi)存是原先的45%逃呼,但是由于項目指標(biāo)問題以及項目老板的要求蜈首,只能在進行數(shù)據(jù)壓縮,故此經(jīng)過查詢肃晚,目前我們項目中value 值存儲的是 HashCode值 锚贱,也就是一個Int類型的值,理論Int 值在Redis 只占8個字節(jié)陷揪,但是實際測試下來并不是這樣惋鸥,故此此處進行進一步驗證。
- 初始化Redis 信息
image.png
圖中的內(nèi)存為Redis 內(nèi)存空的時間的內(nèi)存:847.33K
1. 單個key 值內(nèi)存占用
壓縮前:
key : 0:1:100186648:101:123038565 value : {expireTime:253402271999000,value:"3.613026269891794-0.7847088936607955"}
單個key 內(nèi)存占用如下圖:單個key 占用 79K
image.png
壓縮后:
key : 01:y+sTn:wW:icvPW value : 2014413527
image.png
- 單個key value 壓縮對比
image.png
- 10萬key 測試
- 優(yōu)化前:
image.png
優(yōu)化前悍缠,10萬 key占用內(nèi)存:18.67M
- 優(yōu)化后:
image.png
優(yōu)化后卦绣,10萬 key占用內(nèi)存:9.66M
分析可知:能夠優(yōu)化達到: 48%
- 先按照老的存儲方式進行存儲 100萬key 內(nèi)存占用情況:(key-value )
key : 0:1:100186648:101:123038565 value: {expireTime:253402271999000,value:"3.613026269891794-0.7847088936607955"}
image.png
測試結(jié)果如上圖:100萬數(shù)據(jù) 內(nèi)存占用:200.12M
- value 值按照byte進行存儲 100萬數(shù)據(jù) 內(nèi)存占用
image.png
壓縮后:內(nèi)存占用:92.97M
分析可知:100萬優(yōu)化:最終優(yōu)化 53%