Redis項目中如何用的,如何實現高可用

      網友投稿 744 2025-04-02

      (1)數據持久化

      AOF 方式(快照恢復)

      RDB 方式(只追加文件)

      ( 2)主從同步(主從復制)

      有一主節點和多個從節點,多個節點組成一個 Redis 集群,在這個集群主節點用來進行數據的操作,其他從節點用于同步主節點的內容,并且提供給客戶端進行數據查詢。

      使用主從模式就可以實現數據的讀寫分離,把寫操作的請求分發到主節點上,把其他的讀操作請求分發到從節點上,這樣就減輕了 Redis 主節點的運行壓力,并且提高了 Redis 的整體運行速度。不但如此使用主從模式還實現了 Redis 的高可用,當主服務器宕機之后,可以很迅速的把從節點提升為主節點,為 Redis 服務器的宕機恢復節省了寶貴的時間。并且主從復制還降低了數據丟失的風險,因為數據是完整拷貝在多臺服務器上的,當一個服務器磁盤壞掉之后,可以從其他服務器拿到完整的備份數據。

      原理總結

      Slave啟動成功連接到master后會發送一個sync命令

      Master接到命令啟動后臺的存盤進程,同時收集所有接收到的用于修改數據集命令, 在后臺進程執行完畢之后,master將傳送整個數據文件到slave,以完成一次完全同步

      全量復制:而slave服務在接收到數據庫文件數據后,將其存盤并加載到內存中。第一次連接

      增量復制:Master繼續將新的所有收集到的修改命令依次傳給slave,完成同步。主從復制時

      但是只要是重新連接master,一次完全同步(全量復制)將被自動執行

      slave節點初次連接master節點,會發送psync命令并觸發全量復制。

      此時master節點fork一個后臺進程,開始生成一份RDB快照,同時將那些從外面接收到的寫命令緩存到緩沖區中。

      RDB文件生成完畢后,將此文件發送給slave節點,slave先寫入磁盤,再從磁盤加載到內存,

      接著master會將新增加的緩沖區的寫命令發送給slave,slave執行寫命令并同步數據。

      如果slave節點和master節點因網絡故障斷開連接,會自動重連,連接之后master節點會復制缺少的數據給slave節點。

      常見三種使用方式

      主仆模式

      從服務器重啟之后,需要重新連接主服務器,才能成為從服務器

      從服務器重新連接之后,會復制主機的全部內容

      主服務器重啟之后,還是主服務器。

      薪火相傳

      父傳子,子傳孫

      上一個Slave可以是下一個slave的Master,Slave同樣可以接收其他slaves的連接和同步請求,那么該slave作為了鏈條中下一個的master, 可以有效減輕master的寫壓力,去中心化降低風險。

      反客為主

      當一個master宕機后,后面的slave可以立刻升為master,其后面的slave不用做任何修改。

      用slaveof no one 將從機變為主機。

      主機掛掉,反客為主。需要運維人員輸入命令

      想要解決這個困擾。就看看哨兵模式

      Redis在項目中如何用的,如何實現高可用

      slaveof no one

      (3)Redis 哨兵模式(Sentinel)

      Redis 哨兵模式就是用來監視 Redis 主從服務器的,當 Redis 的主從服務器發生故障之后,Redis 哨兵提供了自動容災修復的功能。

      復制延時

      由于所有的寫操作都是先在Master上操作,然后同步更新到Slave上,所以從Master同步到Slave機器有一定的延遲,當系統很繁忙的時候,延遲問題會更加嚴重,Slave機器數量的增加也會使這個問題更加嚴重。

      故障恢復

      (4)Redis 集群(Cluster)

      Redis 集群實現了對Redis的水平擴容,即啟動N個redis節點,將整個數據庫分布存儲在這N個節點中,每個節點存儲總數據的1/N。

      Redis 集群通過分區(partition)來提供一定程度的可用性(availability): 即使集群中有一部分節點失效或者無法進行通訊, 集群也可以繼續處理命令請求。

      一個集群至少要有三個主節點。

      一個Redis 集群包含 16384 個插槽(hash slot), 數據庫中的每個鍵都屬于這 16384 個插槽的其中一個,

      集群使用公式CRC16(key) % 16384 來計算鍵 key 屬于哪個槽, 其中 CRC16(key) 語句用于計算鍵key 的CRC16 校驗和 。

      集群中的每個節點負責處理一部分插槽。 舉個例子, 如果一個集群可以有主節點, 其中:

      節點A 負責處理 0 號至5460 號插槽。

      節點B 負責處理 5461 號至10922 號插槽。

      節點C 負責處理 10923 號至16383 號插槽。

      總結

      (1)數據持久化保證了數據不丟失;

      (2)Redis 主從同步讓 Redis 從單機變成了多機。它有兩種模式:主從模式和從從模式,但當主節點出現問題時,需要人工手動恢復系統;

      (3)Redis 哨兵模式用來監控 Redis 主從模式,并提供了自動容災恢復的功能。

      (4)Redis 集群,除了可以提供主從和哨兵的功能之外,還提供了多個主從節點的集群功能,這樣就可以把數據均勻的存儲各個主機主節點上,實現了系統的橫向擴展,大大提高了 Redis 的并發處理能力。

      Redis 數據庫

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:wps表格打開亂碼
      下一篇:Go 語言入門很簡單:net/url 包
      相關文章
      亚洲伊人久久大香线蕉综合图片 | 亚洲精品乱码久久久久久自慰| 亚洲日韩一区精品射精| 亚洲AV日韩精品久久久久久久| 亚洲欧洲国产精品香蕉网| 国产自偷亚洲精品页65页| 国产偷窥女洗浴在线观看亚洲 | 婷婷久久久亚洲欧洲日产国码AV | 亚洲一卡2卡三卡4卡无卡下载 | 亚洲日韩欧洲乱码AV夜夜摸| 在线亚洲午夜理论AV大片| 国产成人精品日本亚洲专区61| 久久精品国产精品亚洲下载| 亚洲欧洲国产成人综合在线观看| yy6080亚洲一级理论| 亚洲国产精品无码久久青草| 亚洲精品和日本精品| 最新国产AV无码专区亚洲 | 国产亚洲美女精品久久久| 久久久久一级精品亚洲国产成人综合AV区| 亚洲äv永久无码精品天堂久久| 亚洲av无码成人精品区| 久久亚洲高清综合| 国产亚洲高清不卡在线观看| 久久久亚洲欧洲日产国码农村| 亚洲AV无码国产丝袜在线观看| 久久亚洲美女精品国产精品| 亚洲福利一区二区| www.亚洲成在线| 亚洲国产欧美一区二区三区| 精品国产亚洲一区二区三区在线观看| 亚洲.国产.欧美一区二区三区| 国产AV无码专区亚洲AV琪琪| 亚洲国产成人久久综合一区77| 精品国产人成亚洲区| 久久精品国产精品亚洲艾| 91亚洲精品视频| 中文文字幕文字幕亚洲色| 亚洲AV无码一区二区三区久久精品 | 激情综合亚洲色婷婷五月| 亚洲欧美国产国产综合一区 |