日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

Redis进阶 - Redis主从工作原理详解

發布時間:2025/3/21 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Redis进阶 - Redis主从工作原理详解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 主從配置
  • 主從工作原理
  • 全量復制
  • 增量復制
  • 主從復制風暴


主從配置

簡要回顧一下,Redis的主從配置

  • 復制一份redis.conf文件
  • 將相關配置修改為如下值:
  • port 6380pidfile /var/run/redis_6380.pid # 把pid進程號寫入pidfile配置的文件logfile "6380.log"dir /usr/local/redis-5.0.3/data/6380 # 指定數據存放目錄
  • 配置主從復制
  • replicaof 127.0.0.1 6379 # 從本機6379的redis實例復制數據,Redis 5.0之前使用slaveofreplica-read-only yes # 配置從節點只讀
  • 啟動從節點
  • redis-server redis.conf
  • 連接從節點
  • redis-cli -p 6380
  • 測試在6379實例上寫數據,6380實例是否能及時同步新修改數據

  • 主從工作原理

    • 如果我們給master配置了一個slave,不管這個slave是否是第一次連接上Master,它都會發送一個PSYNC命令給master請求復制數據。

    • master收到PSYNC命令后,會在后臺進行數據持久化通過bgsave生成最新的rdb快照文件,持久化期間,master會繼續接收客戶端的請求,它會把這些可能修改數據集的請求緩存在內存中。

    • 當持久化進行完畢以后,master會把這份rdb文件數據集發送給slave,slave會把接收到的數據進行持久化生成rdb,然后再加載到內存中。然后,master再將之前緩存在內存中的命令發送給slave。

    • 當master與slave之間的連接由于某些原因而斷開時,slave能夠自動重連Master,如果master收到了多個slave并發連接請求,它只會進行一次持久化,而不是一個連接一次,然后再把這一份持久化的數據發送給多個并發連接的slave。


    全量復制


    增量復制

    這個緩沖 默認1m , 在redis.conf中 對應 repl-backlog-size 1mb

    從redis2.8版本開始,redis改用可以支持部分數據復制的命令PSYNC去master同步數據,slave與master能夠在網絡連接斷開重連后只進行部分數據復制(斷點續傳)。

    master會在其內存中創建一個復制數據用的緩存隊列,緩存最近一段時間的數據,master和它所有的slave都維護了復制的數據下標offset和master的進程id,因此,當網絡連接斷開后,slave會請求master繼續進行未完成的復制,從所記錄的數據下標開始。

    如果master進程id變化了,或者從節點數據下標offset太舊,已經不在master的緩存隊列里了,那么將會進行一次全量數據的復制。


    主從復制風暴

    如果有很多從節點,為了緩解主從復制風暴(多個從節點同時復制主節點導致主節點壓力過大),可以做如下架構,讓部分從節點與從節點(與主節點同步)同步數據,

    總結

    以上是生活随笔為你收集整理的Redis进阶 - Redis主从工作原理详解的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。