Redis高可用概述
在Redis中,實作高可用的技術主要包括:持久化、復制(讀寫分離)、哨兵、集群,
-
持久化:
持久化是最簡單的高可用方法(有時甚至不被歸為高可用手段),主要作用是資料備份,即將資料存盤在硬碟,保證資料不會因行程退出而丟失,
-
復制:
復制是高可用Redis的基礎,哨兵和集群都是在復制的基礎上實作高可用的,復制主要實作了資料的多機備份,以及對于讀操作的負載均衡和簡單的故障恢復,
缺陷:故障恢復無法自動化,寫操作無法負載均衡,存盤能力受到單機的限制,
-
哨兵:
在復制的基礎上,哨兵實作了自動化的故障恢復,
缺陷:寫操作無法負載均衡;存盤能力收到單機限制,
-
集群:
通過集群,Redis解決了操作無法負載均衡,以及存盤能力收到單機限制的問題,實作了較為完善的高可用解決方案,
Redis持久化概述
持久化的功能:Redis 是記憶體資料庫,資料都是存盤在記憶體中,
Redis 的持久化分為 RDB 和 AOF 持久化:
- 前者是將資料保存到硬碟,
- 后者是將每次執行的寫命令保存到硬碟,
RDB 持久化
? RDB持久化是將當前行程中的資料生成快照保存到硬碟中(因此也叫做快照持久化),保存的檔案后綴是RDB;
? 當Redis重新啟動時,可以讀取快照檔案恢復資料,
觸發條件:
- 手動觸發
- 自動觸發
手動觸發:save命令和bgsave命令都可以生成 RDB 檔案,
? save命令會阻塞 Redis 服務行程,直到 RDB 檔案創建完畢為止,在 Redis 服務器 阻塞期間,服務器不能執行任 何命令請求,
? bgsave命令會創建一個子行程,由子行程來創建 RDB 檔案,父行程(即 Redis 主行程) 繼續處理請求,bgsave 命令執行程序中,只有fork(ork了行程,子行程中的redis連接沒法用了,要重連) 子行程會阻塞服務器,而對于 save 命令,整個程序都會阻塞服務器,
在自動觸發 RDB 持久化時,Redis 也會使用 bgsave 而不是 save 來進行持久化;下面介紹自動觸發 RDB 持久化條件,
自動觸發:最常見的情況是在組態檔中通過 save m n ,指定 m 秒內發生了 n 次變化時,會觸發 bgsave,
? 在Redis 組態檔Redis.conf中,可以看到如下配置資訊:
save 900 1 #當時間到 900 秒時,如果 Redis 資料發生了至少 1 次變化,則執行 bgsave,
save 300 10
save 60 10000
除了 save m n 以外,還有一些其他情況會觸發 bgsave:
- 在主從復制場景下,如果從節點執行全量復制操作,則主節點會執行 bgsave 命令,并將 RDB 檔案發送給從節點,
- 執行 shutdown 命令時,也會自動執行 RDB 持久化,
啟動時加載
? RDB 的載入作業實在服務器啟動時自動執行的,并沒有專門的命令,但是由于 AOF 的優先級更高,因此當 AOF 開啟時,會優先載入 AOF 檔案來恢復資料,
檔案校驗:
? Redis 載入 RDB 檔案時,會對 RDB 檔案進行校驗,如果檔案損壞,則日志中會列印錯誤,Redis 啟動失敗,
AOF 持久化
? RDB 持久化是將行程資料寫入硬碟,而 AOF 持久化(即 Append Only File 持久化),則是將 Redis 執行的每次寫 命令記錄到單獨的日志檔案中,當 Redis 重啟的時候再次執行 AOF 來恢復資料,
與 RDB 相比 ,AOF 實時性更好,因此已成為當前主流的持久化方案,
開啟 AOF:Redis 服務器默認開啟 RDB,關閉 AOF;要開啟 AOF,需要在組態檔中配置:appendonly yes,
檔案校驗:
? 與載入 RDB 檔案類似,Redis 載入 AOF 檔案時,會對 AOF 檔案進行校驗,如果檔案損壞,則日志中會列印錯 誤,Redis 啟動失敗,
RDB與AOF的優缺點
RDB 持久化:
-
優點:RDB 檔案緊湊,體積小,網路傳輸快,適合全量復制;恢復速度比 AOF 快很多,當然,與 AOF 相比,RDB 最重要的優點之一是對性能的影響相對較小,
-
缺點:RDB 檔案的致命缺點在于其資料快照的持久化方式決定了必然做不到實時持久化,而在資料越來越重要的今天,資料的大量丟失很多時候是無法接受的,因此 AOF 持久化成為主流,
此外,RDB 需要滿足特定的格式,兼容性差/
AOF 持久化:
- 與 RDB 持久化相對應,AOF 的優點在于支持秒級持久化、兼容性好,缺點是檔案大、恢復速度慢、對性能影響大,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/26256.html
標籤:NoSQL
上一篇:令人抓狂的redis和rediscluster Python驅動包的安裝
下一篇:redis主從復制
