您好,登錄后才能下訂單哦!
這篇文章給大家分享的是有關Redis合理配置持久化策略有哪些的內容。小編覺得挺實用的,因此分享給大家做個參考,一起跟隨小編過來看看吧。
Redis 支持兩種持久化策略,RDB 和 AOF。
RDB 通過 fork 子進程,生成數據快照,二進制格式。
AOF 是增量日志,文本格式,通常較大。會通過 AOF rewrite 重寫日志,節省空間。
除了手動執行「BGREWRITEAOF」命令外,以下 4 點也會觸發 AOF 重寫
執行「config set appendonly yes」命令
AOF 文件大小比例超出閾值,「auto-aof-rewrite-percentage」
AOF 文件大小絕對值超出閾值,「auto-aof-rewrite-min-size」
主從復制完成 RDB 加載
RDB 和 AOF,都是在主線程中觸發執行。雖然具體執行,會通過 fork 交給后臺子進程。但 fork 操作,會拷貝進程數據結構、頁表等,當實例內存較大時,會影響性能。
AOF 支持以下三種策略。
appendfsync no:由操作系統決定執行 fsync 時機。 對 Linux 來說,通常每 30 秒執行一次 fsync,將緩沖區中的數據刷到磁盤上。如果 Redis qps 過高或寫 big key,可能導致 buffer 寫滿,從而頻繁觸發 fsync。
appendfsync everysec: 每秒執行一次 fsync。
appendfsync always: 每次「寫」會調用一次 fsync,性能影響較大。
AOF 和 RDB 都會對磁盤 IO 造成較高的壓力。其中,AOF rewrite 會將 Redis hash 表所有數據進行遍歷并寫磁盤。對性能會產生一定的影響。
線上業務 Redis 通常是高可用的。如果對緩存數據丟失不敏感。考慮關閉 RDB 和 AOF 以提升性能。
如果無法關閉,有以下幾點建議:
RDB 選擇業務低峰期做,通常為凌晨。保持單個實例內存不超過 32 G。太大的內存會導致 fork 耗時增加。
AOF 選擇 appendfsync no 或者 appendfsync everysec。
AOF auto-aof-rewrite-min-size 配置大一些,如 2G。避免頻繁觸發 rewrite。
AOF 可以僅在從節點開啟,減輕主節點壓力。
根據本地測試,不開啟 AOF,寫性能大約能提升 20% 左右。
感謝各位的閱讀!關于“Redis合理配置持久化策略有哪些”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,讓大家可以學到更多知識,如果覺得文章不錯,可以把它分享出去讓更多的人看到吧!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。