1 回答

TA貢獻1836條經(jīng)驗 獲得超3個贊
根據(jù)Redis 兩個版本的測試結(jié)果對比得出以下結(jié)論
一、Redis 2.6主從同步在網(wǎng)絡(luò)閃斷的情況下會自動開啟新的端口進行重新鏈,同時會進行一下操作:
1、斷開鏈接的從會向主發(fā)送SYNC命令
2、然后主fork進程導(dǎo)出rdb文件發(fā)送到從
3、從接收到完整的數(shù)據(jù)后,清空Redis內(nèi)數(shù)據(jù)然后在從RDB中恢復(fù)
但是根據(jù)測試結(jié)果發(fā)現(xiàn)以下問題:
1、多個主從關(guān)系同時斷開的時候,主導(dǎo)出RDB文件時,會占用大量內(nèi)存
2、從接收到完整數(shù)據(jù)后,恢復(fù)數(shù)據(jù)的時候,會清空數(shù)據(jù),這時候由于Redis數(shù)據(jù)量很大,目前10G左右內(nèi)存恢復(fù)速度大約1分鐘左右,這一分鐘內(nèi),很多請求無法獲取數(shù)據(jù)
3、在從RDB恢復(fù)數(shù)據(jù)的過程中,部分請求會被阻塞,導(dǎo)致請求超時(目前報警無法獲取數(shù)據(jù)根次有關(guān))
二、Redis 2.8.8 沒有發(fā)現(xiàn)以上問題,因為Redis 2.8鏈接閃斷重新連接后,從會從斷開之前的主從同步進度開始繼續(xù)同步,不會有全量恢復(fù)的問題
三、Redis 2.8 和 Redis 2.6 在進行save操作的時候,save過程中所有的請求都會被阻塞,導(dǎo)致前端請求失敗,所以不要再查詢的從上進行save操作
根據(jù)以上得出建議:
1、Redis 升級到 2.8 以上,保證數(shù)據(jù)主從同步時候的可用性
2、不要直接在Redis從或主上進行save操作,可以按王彬的建議在關(guān)鍵節(jié)點增加新的從用于save備份使用
3、建議優(yōu)化Redis存儲,單個端口存儲數(shù)據(jù)不要過大,這樣可以保證單個端口掛掉數(shù)據(jù)數(shù)據(jù)時候的速度,和影響面積
Redis 2.8和SSDB性能對比
SSDB 1.6.8.6
順序?qū)?: 1.645 ms/op 59.4 MB/s
隨機寫 : 1.679 ms/op 58.2 MB/s
順序讀 : 1.286 ms/op 75.9 MB/s
隨機讀 : 1.225 ms/op 79.7 MB/s
rpush : 1.546 ms/op 63.2 MB/s
lpop : 1.303 ms/op 74.9 MB/s
Redis 2.8.8
順序?qū)?: 1.617 ms/op 60.4 MB/s
隨機寫 : 1.214 ms/op 80.4 MB/s
順序讀 : 1.156 ms/op 84.5 MB/s
隨機讀 : 1.153 ms/op 84.7 MB/s
rpush : 1.222 ms/op 79.9 MB/s
lpop : 1.153 ms/op 84.7 MB/s
- 1 回答
- 0 關(guān)注
- 956 瀏覽
添加回答
舉報