首頁 >資料庫 >Redis >redis效能優化方法

redis效能優化方法

尚
轉載
2020-05-15 09:20:563478瀏覽

redis效能優化方法

一、 Redis部署結構最佳化建議

1. Master不做AOF或RDB持久化,Slave做AOF持久化,建議同時做RDB持久化

#2.所有Master全部增加Slave

3. Master掛載Slave不超過2個,採用M-S-S方式掛載。若想確保高可用,即主從切換,可採用Keepalived機制.

備註:以上是基於Redis部署結構不合理提出的建議,同時也參考了新浪微博、淘寶架構中Redis優化方案給出

二、 Redis配置最佳化建議

1.tcp-keepalive 60 

阻止由於某個command執行過長達到timeout逾時時間而被斷開連接,並且可以提高連接錯誤的檢測.

2.stop-writes-on-bgsave-error no

當bgsave快照操作出錯時停止寫資料到磁盤,這樣後面寫入操作均會失敗,為了不影響後續寫入操作,故需將該項值改為no.

3.rdbchecksum no

檢查RDB資料的正確性,會犧牲10%的效能,故建議關閉.

4.auto-aof-rotate-max-size  20gb

auto-aof-rotate-max-total 4
auto-aof-rewrite-percentage 0 (关闭rewrite模式)

將AOF rewrite模式改為rotate模式,即將AOF線上即時Rewrite的功能,切換到線下操作,1份AOF檔切割成多份(類似日誌切割),這樣提升了redis效能的同時提升記憶體的使用率.

5.no-appendfsync-on-rewrite  yes

避免新修改資料刷磁碟時出現IO阻塞

備註:以上是基於Redis配置不合理提出的最佳化建議

三、系統核心配置最佳化建議

1.開啟了AOF模式,為了緩解IO阻塞
編輯/etc/sysctl.conf ,加入以下設定:

vm.dirty_background_ratio = 5
vm.dirty_ratio = 10

然後sysctl -p 使設定檔生效.

#2.開啟了RDB模式,為了避免Fork失敗

編輯/etc/sysctl.conf ,改vm.overcommit_memory=1,

#然後sysctl -p 使設定檔生效

備註:以上是基於測試結果給出的系統核心最佳化建議

後續計畫:

以上是從架構角度提出的最佳化建議,後續會從業務角度,分析記憶體類型是否合理、冷熱資料劃分是否合理等

備註:

關於冷熱資料劃分,可使用以下Redis指令進行統計分析:

OBJECT REFCOUNT 此指令主要用於偵錯( debugging),它能夠傳回指定key所對應value被引用的次數.

OBJECT ENCODING 此指令傳回指定key對應value所使用的內部表示(representation)(譯者註:也可以理解為資料的壓縮方式).

OBJECT IDLETIME 此指令傳回指定key對應的value自被儲存之後空閒的時間,以秒為單位(沒有讀寫運算的請求) ,這個值傳回以10秒為單位的秒級別時間,這一點可能在以後的實現中改善。

更多redis知識請關注redis入門教學欄位。

以上是redis效能優化方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除