最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis 同步機(jī)制全面解析

 更新時(shí)間:2025年09月29日 09:35:49   作者:祈禱蒼天賜我java之術(shù)  
本文系統(tǒng)解析了Redis的同步機(jī)制,涵蓋主從復(fù)制、哨兵模式和集群模式,主從實(shí)現(xiàn)數(shù)據(jù)備份與讀寫分離,哨兵保障高可用自動(dòng)故障轉(zhuǎn)移,集群支持分布式分片與水平擴(kuò)展,感興趣的朋友一起看看吧

一、Redis 同步機(jī)制的核心與價(jià)值

1.1 核心需求:數(shù)據(jù)備份與讀寫分離

數(shù)據(jù)備份

在實(shí)際生產(chǎn)環(huán)境中,單機(jī)Redis實(shí)例存在多種風(fēng)險(xiǎn):

  • 服務(wù)器硬件故障導(dǎo)致數(shù)據(jù)永久丟失
  • 操作系統(tǒng)崩潰導(dǎo)致內(nèi)存數(shù)據(jù)未持久化
  • 誤操作刪除關(guān)鍵數(shù)據(jù)

通過同步機(jī)制建立主從架構(gòu),可以實(shí)現(xiàn):

  1. 多副本存儲(chǔ):數(shù)據(jù)至少存在于2個(gè)節(jié)點(diǎn)(1主1從),典型配置為1主2從
  2. 容災(zāi)恢復(fù):當(dāng)主節(jié)點(diǎn)故障時(shí),可快速提升從節(jié)點(diǎn)為新主節(jié)點(diǎn)
  3. 數(shù)據(jù)持久化保障:結(jié)合RDB和AOF持久化策略,即使主節(jié)點(diǎn)完全損壞,從節(jié)點(diǎn)也能提供完整的數(shù)據(jù)恢復(fù)點(diǎn)

示例場(chǎng)景:電商平臺(tái)商品庫存數(shù)據(jù),通過同步機(jī)制確保即使主節(jié)點(diǎn)宕機(jī),從節(jié)點(diǎn)也能繼續(xù)提供服務(wù),避免超賣。

讀寫分離

Redis的主從架構(gòu)天然支持讀寫分離:

  • 主節(jié)點(diǎn)(Master):處理所有寫入操作(SET, INCR等)和部分關(guān)鍵讀請(qǐng)求
  • 從節(jié)點(diǎn)(Slave):處理90%以上的讀請(qǐng)求(GET, HGET等),支持配置多個(gè)從節(jié)點(diǎn)實(shí)現(xiàn)水平擴(kuò)展

優(yōu)勢(shì)體現(xiàn)

  • 提升系統(tǒng)整體吞吐量:讀性能隨從節(jié)點(diǎn)數(shù)量線性增長(zhǎng)
  • 降低主節(jié)點(diǎn)負(fù)載:將CPU密集型操作(如復(fù)雜Lua腳本)分流到從節(jié)點(diǎn)
  • 實(shí)現(xiàn)地域就近訪問:在不同機(jī)房部署從節(jié)點(diǎn),減少網(wǎng)絡(luò)延遲

典型應(yīng)用

  • 社交平臺(tái):主節(jié)點(diǎn)處理發(fā)帖/點(diǎn)贊等寫操作,從節(jié)點(diǎn)處理信息流展示
  • 內(nèi)容管理系統(tǒng):主節(jié)點(diǎn)處理內(nèi)容更新,從節(jié)點(diǎn)處理內(nèi)容查詢

1.2 關(guān)鍵目標(biāo):高效、可靠、低延遲

高效性實(shí)現(xiàn)

Redis采用智能復(fù)制策略平衡效率:

  • 全量復(fù)制
    • 初次連接時(shí)執(zhí)行
    • 通過RDB快照完成
    • 優(yōu)化措施:支持無盤復(fù)制(diskless replication)
  • 增量復(fù)制
    • 基于復(fù)制積壓緩沖區(qū)(repl-backlog-buffer)
    • 默認(rèn)大小1MB,可根據(jù)網(wǎng)絡(luò)質(zhì)量調(diào)整
    • 僅傳輸變更命令,大幅減少帶寬占用

配置建議

repl-backlog-size 16mb  # 提升緩沖區(qū)大小應(yīng)對(duì)網(wǎng)絡(luò)不穩(wěn)定
repl-diskless-sync yes  # 啟用無盤復(fù)制加速全量同步

可靠性保障

Redis通過多種機(jī)制確保同步可靠性:

  • 斷點(diǎn)續(xù)傳:基于復(fù)制偏移量(replication offset)記錄同步進(jìn)度
  • 心跳檢測(cè):主從定期(默認(rèn)10秒)PING-PONG通信
  • 自動(dòng)重連:網(wǎng)絡(luò)恢復(fù)后自動(dòng)重新建立同步連接
  • 數(shù)據(jù)校驗(yàn):使用CRC64校驗(yàn)和驗(yàn)證數(shù)據(jù)一致性

低延遲優(yōu)化

為實(shí)現(xiàn)毫秒級(jí)同步延遲,Redis采用:

  1. TCP長(zhǎng)連接:避免頻繁建立連接的開銷
  2. 異步復(fù)制:主節(jié)點(diǎn)不等待從節(jié)點(diǎn)ACK繼續(xù)處理請(qǐng)求
  3. 延遲監(jiān)控
    INFO replication  # 查看master_repl_offset和slave_repl_offset差值
  4. 硬件優(yōu)化
    • 主從節(jié)點(diǎn)部署在同一可用區(qū)減少網(wǎng)絡(luò)延遲
    • 使用高性能網(wǎng)卡(如10Gbps)

性能指標(biāo)

  • 同機(jī)房延遲:通常<1ms
  • 跨機(jī)房延遲:取決于網(wǎng)絡(luò)質(zhì)量,通常<10ms
  • 極端情況下可配置WAIT命令實(shí)現(xiàn)同步寫(犧牲性能換取更強(qiáng)一致性)

二、基礎(chǔ)同步:主從復(fù)制(Master-Slave Replication)

主從復(fù)制是 Redis 同步機(jī)制的基石,所有高級(jí)同步(哨兵、集群)均基于此擴(kuò)展。其核心邏輯是通過主節(jié)點(diǎn)(Master)和從節(jié)點(diǎn)(Slave)的協(xié)作,實(shí)現(xiàn)數(shù)據(jù)的分布式存儲(chǔ)和讀寫分離。從節(jié)點(diǎn)主動(dòng)連接主節(jié)點(diǎn),復(fù)制主節(jié)點(diǎn)的數(shù)據(jù)集,并實(shí)時(shí)同步主節(jié)點(diǎn)的寫操作。這種架構(gòu)設(shè)計(jì)不僅提高了系統(tǒng)的可用性,還能有效分擔(dān)主節(jié)點(diǎn)的讀請(qǐng)求壓力。

2.1 主從復(fù)制的三個(gè)核心階段

主從復(fù)制全流程分為"建立連接"、"數(shù)據(jù)同步"、"命令傳播"三個(gè)階段,缺一不可。這三個(gè)階段構(gòu)成了一個(gè)完整的數(shù)據(jù)同步生命周期,確保主從節(jié)點(diǎn)之間的數(shù)據(jù)最終一致性。

階段 1:建立連接(握手階段)

從節(jié)點(diǎn)通過配置slaveof <master-ip> <master-port>(Redis 5.0 后推薦使用更符合現(xiàn)代語義的replicaof)觸發(fā)連接流程,具體步驟如下:

  • 初始化連接
    • 從節(jié)點(diǎn)啟動(dòng)后,向主節(jié)點(diǎn)發(fā)送SYNC命令(Redis 2.8 前)或更先進(jìn)的PSYNC命令(Redis 2.8 后,支持增量復(fù)制)
    • 主節(jié)點(diǎn)收到命令后,首先驗(yàn)證從節(jié)點(diǎn)的requirepass(若配置)與自身masterauth是否一致
    • 驗(yàn)證通過后,主節(jié)點(diǎn)返回+OK響應(yīng)
  • 建立通信通道
    • 主節(jié)點(diǎn)創(chuàng)建一個(gè)專門的"復(fù)制客戶端"(用于向從節(jié)點(diǎn)發(fā)送數(shù)據(jù))
    • 從節(jié)點(diǎn)創(chuàng)建"復(fù)制監(jiān)聽器"(用于接收主節(jié)點(diǎn)發(fā)送的數(shù)據(jù))
    • 雙方完成TCP連接初始化,為后續(xù)數(shù)據(jù)傳輸做好準(zhǔn)備
  • 連接確認(rèn)
    • 從節(jié)點(diǎn)會(huì)定期發(fā)送PING命令檢測(cè)連接狀態(tài)
    • 主節(jié)點(diǎn)響應(yīng)PONG確認(rèn)連接正常

階段 2:數(shù)據(jù)同步(全量 / 增量復(fù)制)

這是同步的核心階段,分為兩種模式:全量復(fù)制(首次同步或從節(jié)點(diǎn)斷線過久)和增量復(fù)制(從節(jié)點(diǎn)短期斷線后恢復(fù))。選擇哪種模式取決于從節(jié)點(diǎn)的同步狀態(tài)和斷開時(shí)間。

2.2.1 全量復(fù)制:從 0 到 1 復(fù)制完整數(shù)據(jù)集

當(dāng)遇到以下情況時(shí)會(huì)觸發(fā)全量復(fù)制:

  • 從節(jié)點(diǎn)是全新節(jié)點(diǎn),從未同步過數(shù)據(jù)
  • 從節(jié)點(diǎn)的replid(主節(jié)點(diǎn)標(biāo)識(shí))與主節(jié)點(diǎn)不一致
  • 從節(jié)點(diǎn)的復(fù)制偏移量offset不在主節(jié)點(diǎn)的復(fù)制積壓緩沖區(qū)范圍內(nèi)

全量復(fù)制詳細(xì)流程

  • 發(fā)起請(qǐng)求
    • 從節(jié)點(diǎn)發(fā)送PSYNC ? -1命令(表示請(qǐng)求全量復(fù)制)
  • 主節(jié)點(diǎn)準(zhǔn)備RDB
    • 主節(jié)點(diǎn)接收到請(qǐng)求后,執(zhí)行bgsave命令在后臺(tái)生成RDB快照文件
    • 在生成RDB期間,主節(jié)點(diǎn)會(huì)緩存所有寫操作(如SET、HSET)到"復(fù)制積壓緩沖區(qū)"
  • 傳輸RDB文件
    • RDB生成完成后,主節(jié)點(diǎn)通過專用連接將RDB文件分塊傳輸給從節(jié)點(diǎn)
    • 傳輸過程中使用TCP滑動(dòng)窗口機(jī)制優(yōu)化網(wǎng)絡(luò)傳輸效率
  • 從節(jié)點(diǎn)加載數(shù)據(jù)
    • 從節(jié)點(diǎn)收到RDB文件后,首先安全地清空自身數(shù)據(jù)集
    • 然后將RDB文件加載到內(nèi)存中,重建數(shù)據(jù)庫
  • 同步緩沖命令
    • 主節(jié)點(diǎn)發(fā)送完RDB后,將"復(fù)制積壓緩沖區(qū)"中的寫操作按順序發(fā)送給從節(jié)點(diǎn)
    • 從節(jié)點(diǎn)執(zhí)行這些命令,確保與主節(jié)點(diǎn)數(shù)據(jù)完全一致

性能考量

  • RDB生成過程會(huì)fork子進(jìn)程,可能導(dǎo)致短暫延遲
  • 網(wǎng)絡(luò)傳輸大數(shù)據(jù)量可能成為瓶頸
  • 從節(jié)點(diǎn)加載RDB時(shí)會(huì)出現(xiàn)服務(wù)暫停
  • 建議在業(yè)務(wù)低峰期執(zhí)行全量復(fù)制,并確保網(wǎng)絡(luò)帶寬充足
2.2.2 增量復(fù)制:僅同步斷線期間的增量數(shù)據(jù)

當(dāng)從節(jié)點(diǎn)短期斷線(如網(wǎng)絡(luò)閃斷)后重新連接,且主節(jié)點(diǎn)的"復(fù)制積壓緩沖區(qū)"仍保留斷線期間的寫操作時(shí),觸發(fā)增量復(fù)制。這種模式顯著提高了同步效率。

增量復(fù)制詳細(xì)流程

  • 重新連接
    • 從節(jié)點(diǎn)重新連接主節(jié)點(diǎn)時(shí),發(fā)送PSYNC <replid> <offset>命令
    • replid是主節(jié)點(diǎn)標(biāo)識(shí),offset是從節(jié)點(diǎn)最后一次同步的位置
  • 主節(jié)點(diǎn)驗(yàn)證
    • 主節(jié)點(diǎn)驗(yàn)證replid是否與自身一致
    • 檢查offset是否在"復(fù)制積壓緩沖區(qū)"的有效范圍內(nèi)(緩沖區(qū)保留[master_offset - backlog_size, master_offset]的操作)
  • 執(zhí)行增量同步
    • 驗(yàn)證通過后,主節(jié)點(diǎn)僅將offset之后的寫操作從緩沖區(qū)發(fā)送給從節(jié)點(diǎn)
    • 從節(jié)點(diǎn)執(zhí)行這些增量命令,快速追上主節(jié)點(diǎn)數(shù)據(jù)狀態(tài)

增量復(fù)制的關(guān)鍵條件

  1. 從節(jié)點(diǎn)需正確記錄上一次同步的replidoffset(存儲(chǔ)在replica.conf中)
  2. 主節(jié)點(diǎn)的"復(fù)制積壓緩沖區(qū)"需足夠大,能夠容納斷線期間的寫操作
  3. 斷線時(shí)間未超過repl-backlog-ttl(默認(rèn)3600秒),避免緩沖區(qū)被清空

優(yōu)化建議

  • 對(duì)于寫操作頻繁的場(chǎng)景,適當(dāng)增大repl-backlog-size
  • 監(jiān)控從節(jié)點(diǎn)的復(fù)制延遲,及時(shí)發(fā)現(xiàn)潛在問題
  • 定期檢查復(fù)制積壓緩沖區(qū)的使用情況

階段 3:命令傳播(實(shí)時(shí)同步寫操作)

數(shù)據(jù)同步完成后,主從進(jìn)入"命令傳播"階段,這是維持?jǐn)?shù)據(jù)一致性的關(guān)鍵環(huán)節(jié)。主節(jié)點(diǎn)每執(zhí)行一次寫命令,都會(huì)將該命令發(fā)送給所有從節(jié)點(diǎn),從節(jié)點(diǎn)執(zhí)行相同命令,確保數(shù)據(jù)實(shí)時(shí)同步。

命令傳播的詳細(xì)機(jī)制

  • 寫命令傳播流程
    • 客戶端向主節(jié)點(diǎn)發(fā)送寫命令(如SET key value
    • 主節(jié)點(diǎn)執(zhí)行命令并修改本地?cái)?shù)據(jù)
    • 主節(jié)點(diǎn)將命令封裝為Redis協(xié)議格式,發(fā)送給所有從節(jié)點(diǎn)
    • 從節(jié)點(diǎn)接收并執(zhí)行相同命令
  • 性能優(yōu)化策略
    • 主節(jié)點(diǎn)采用"異步發(fā)送"模式:寫命令執(zhí)行后立即返回客戶端,隨后異步將命令發(fā)送給從節(jié)點(diǎn)
    • 從節(jié)點(diǎn)通過repl-disable-tcp-nodelay配置控制TCP特性:
    • 默認(rèn)no(關(guān)閉TCP_NODELAY):TCP會(huì)緩沖小數(shù)據(jù)包,減少網(wǎng)絡(luò)請(qǐng)求數(shù),但可能增加毫秒級(jí)延遲
    • 設(shè)為yes(開啟TCP_NODELAY):寫命令立即發(fā)送,延遲降低,但網(wǎng)絡(luò)請(qǐng)求數(shù)增加
  • 復(fù)制偏移量監(jiān)控
    • 主從節(jié)點(diǎn)都會(huì)維護(hù)復(fù)制偏移量offset
    • 通過INFO replication可以查看主從節(jié)點(diǎn)的master_repl_offsetslave_repl_offset
    • 兩者的差值反映了復(fù)制延遲

2.2 主從復(fù)制的核心配置

主節(jié)點(diǎn)配置

配置項(xiàng)示例值說明推薦設(shè)置
bind0.0.0.0允許從節(jié)點(diǎn)遠(yuǎn)程連接生產(chǎn)環(huán)境建議綁定具體IP
protected-modeno關(guān)閉保護(hù)模式必須關(guān)閉才能遠(yuǎn)程連接
port6379主節(jié)點(diǎn)服務(wù)端口默認(rèn)6379,可修改
requirepassStr0ngP@ss主節(jié)點(diǎn)訪問密碼生產(chǎn)環(huán)境必須設(shè)置
masterauthStr0ngP@ss主從同步驗(yàn)證密碼需與從節(jié)點(diǎn)密碼一致
repl-backlog-size32mb復(fù)制積壓緩沖區(qū)大小寫頻繁場(chǎng)景建議增大
repl-backlog-ttl3600緩沖區(qū)保留時(shí)間默認(rèn)3600秒(1小時(shí))

從節(jié)點(diǎn)配置

配置項(xiàng)示例值說明推薦設(shè)置
replicaof192.168.1.1 6379指定主節(jié)點(diǎn)地址Redis 5.0+使用
slaveof192.168.1.1 6379Redis 5.0前使用已棄用
requirepassStr0ngP@ss從節(jié)點(diǎn)密碼需與主節(jié)點(diǎn)masterauth一致
replica-read-onlyyes從節(jié)點(diǎn)只讀模式默認(rèn)開啟,防止誤寫
repl-disable-tcp-nodelayyesTCP優(yōu)化選項(xiàng)延遲敏感場(chǎng)景開啟

配置驗(yàn)證方法

  • 主節(jié)點(diǎn)檢查
  • redis-cli -a yourpassword info replication
  • 查看connected_slaves是否為預(yù)期的從節(jié)點(diǎn)數(shù)量,以及每個(gè)從節(jié)點(diǎn)的狀態(tài)信息。
  • 從節(jié)點(diǎn)檢查
  • redis-cli -a yourpassword info replication
  • 確認(rèn)master_hostmaster_port是否正確,master_link_status是否為up(表示連接正常)。
  • 復(fù)制延遲監(jiān)控: 比較主節(jié)點(diǎn)的master_repl_offset和從節(jié)點(diǎn)的slave_repl_offset,兩者的差值即為復(fù)制延遲。

常見問題處理

  • 連接失敗
    • 檢查防火墻設(shè)置
    • 驗(yàn)證密碼配置是否正確
    • 確認(rèn)主節(jié)點(diǎn)bind配置允許遠(yuǎn)程連接
  • 同步中斷
    • 檢查網(wǎng)絡(luò)連接狀態(tài)
    • 查看日志文件定位問題
    • 適當(dāng)增大repl-timeout(默認(rèn)60秒)
  • 性能優(yōu)化
    • 對(duì)于大型數(shù)據(jù)集,考慮在低峰期執(zhí)行全量同步
    • 適當(dāng)調(diào)整repl-backlog-size避免頻繁全量同步
    • 監(jiān)控復(fù)制延遲,及時(shí)發(fā)現(xiàn)性能瓶頸

三、高可用同步:哨兵模式(Sentinel)

3.1 哨兵模式的核心角色與架構(gòu)

哨兵模式是一個(gè)分布式系統(tǒng),由以下三部分組成:

  • 哨兵節(jié)點(diǎn)(Sentinel)
    • 獨(dú)立的Redis進(jìn)程,不存儲(chǔ)業(yè)務(wù)數(shù)據(jù)
    • 主要職責(zé):
    • 持續(xù)監(jiān)控主從節(jié)點(diǎn)健康狀態(tài)
    • 檢測(cè)到主節(jié)點(diǎn)故障時(shí)自動(dòng)觸發(fā)故障轉(zhuǎn)移
    • 通知客戶端主從拓?fù)渥兏?/li>
    • 充當(dāng)服務(wù)發(fā)現(xiàn)的配置中心
  • 主節(jié)點(diǎn)(Master)
    • 與普通Redis主節(jié)點(diǎn)功能相同
    • 需要響應(yīng)哨兵的監(jiān)控請(qǐng)求
    • 向哨兵報(bào)告其從節(jié)點(diǎn)列表
  • 從節(jié)點(diǎn)(Slave)
    • 與普通Redis從節(jié)點(diǎn)功能相同
    • 自動(dòng)被哨兵發(fā)現(xiàn)并監(jiān)控
    • 在故障轉(zhuǎn)移時(shí)可能被提升為新主節(jié)點(diǎn)

架構(gòu)設(shè)計(jì)要點(diǎn)

  • 哨兵節(jié)點(diǎn)數(shù)量必須≥3且為奇數(shù)(推薦3或5個(gè))
    • 原因:避免腦裂,確保故障轉(zhuǎn)移需要"多數(shù)哨兵同意"的機(jī)制能正常工作
    • 示例:3個(gè)哨兵時(shí),至少需要2個(gè)哨兵達(dá)成共識(shí)才能執(zhí)行故障轉(zhuǎn)移
  • 主從節(jié)點(diǎn)數(shù)量可根據(jù)業(yè)務(wù)需求靈活配置
    • 典型配置:1主2從+3哨兵(適合中小規(guī)模應(yīng)用)
    • 大型系統(tǒng)可能采用:1主5從+5哨兵

3.2 哨兵模式的同步邏輯(故障轉(zhuǎn)移流程)

步驟1:監(jiān)控(Sentinel Monitoring)

哨兵節(jié)點(diǎn)通過以下機(jī)制實(shí)現(xiàn)全面監(jiān)控:

  • 初始配置
  • sentinel monitor mymaster 192.168.1.1 6379 2
    • mymaster:主節(jié)點(diǎn)別名
    • 192.168.1.1:6379:主節(jié)點(diǎn)地址
    • 2:判定客觀下線需要的哨兵票數(shù)
  • 健康檢查機(jī)制
    • 每1秒發(fā)送PING命令到所有被監(jiān)控節(jié)點(diǎn)
    • 正常響應(yīng):返回PONG
    • 每10秒發(fā)送INFO replication到主節(jié)點(diǎn)
    • 獲取從節(jié)點(diǎn)列表及其復(fù)制狀態(tài)
    • 自動(dòng)發(fā)現(xiàn)新增的從節(jié)點(diǎn)
  • 哨兵集群通信
    • 使用Redis的Pub/Sub功能
    • 每2秒通過__sentinel__:hello頻道廣播節(jié)點(diǎn)狀態(tài)
    • 維護(hù)哨兵之間的共識(shí)狀態(tài)

步驟2:主觀下線與客觀下線

  • 主觀下線(SDOWN)
    • 觸發(fā)條件:?jiǎn)蝹€(gè)哨兵在down-after-milliseconds(默認(rèn)30秒)內(nèi)未收到主節(jié)點(diǎn)的有效響應(yīng)
    • 處理動(dòng)作:該哨兵將主節(jié)點(diǎn)標(biāo)記為"主觀下線"
  • 客觀下線(ODOWN)
  • 觸發(fā)流程:
    • 發(fā)起投票:哨兵發(fā)送SENTINEL is-master-down-by-addr命令詢問其他哨兵
    • 收集響應(yīng):等待其他哨兵回復(fù)(包含它們對(duì)主節(jié)點(diǎn)狀態(tài)的判斷)
    • 達(dá)成共識(shí):當(dāng)≥quorum個(gè)哨兵同意主節(jié)點(diǎn)不可用時(shí),標(biāo)記為"客觀下線"
    • 示例:配置quorum=2時(shí),需要至少2個(gè)哨兵確認(rèn)主節(jié)點(diǎn)故障

步驟3:選舉新主節(jié)點(diǎn)

選舉過程采用多級(jí)排序策略:

  • 第一優(yōu)先級(jí):replica-priority
    • 配置項(xiàng):replica-priority(默認(rèn)100)
    • 規(guī)則:數(shù)值越小優(yōu)先級(jí)越高
    • 應(yīng)用場(chǎng)景:可以手動(dòng)指定某些從節(jié)點(diǎn)優(yōu)先被選為主節(jié)點(diǎn)
  • 第二優(yōu)先級(jí):復(fù)制偏移量(offset)
    • 比較各從節(jié)點(diǎn)與主節(jié)點(diǎn)的數(shù)據(jù)同步進(jìn)度
    • 選擇復(fù)制進(jìn)度最接近原主節(jié)點(diǎn)的從節(jié)點(diǎn)
    • 確保數(shù)據(jù)丟失最少
  • 第三優(yōu)先級(jí):runid
    • Redis實(shí)例啟動(dòng)時(shí)生成的唯一標(biāo)識(shí)
    • 按字典序選擇runid較小的節(jié)點(diǎn)
    • 作為最終裁決條件

步驟4:故障轉(zhuǎn)移執(zhí)行

完整的故障轉(zhuǎn)移流程:

  • 提升新主
  • SLAVEOF NO ONE
    
    • 取消新主節(jié)點(diǎn)的從屬關(guān)系
    • 使其開始接受寫請(qǐng)求
  • 重配置從節(jié)點(diǎn)
  • REPLICAOF <new-master-ip> <new-master-port>
    
  • 所有從節(jié)點(diǎn)開始同步新主節(jié)點(diǎn)的數(shù)據(jù)
  • 采用增量復(fù)制或全量復(fù)制(取決于復(fù)制偏移量)
  • 舊主節(jié)點(diǎn)處理
    • 當(dāng)舊主節(jié)點(diǎn)恢復(fù)后,自動(dòng)被配置為新主節(jié)點(diǎn)的從節(jié)點(diǎn)
    • 通過INFO replication命令可以驗(yàn)證復(fù)制關(guān)系
  • 客戶端通知
    • 哨兵通過+switch-master事件通知客戶端
    • 客戶端應(yīng)實(shí)現(xiàn)自動(dòng)重連機(jī)制

3.3 哨兵模式的核心配置(實(shí)戰(zhàn))

關(guān)鍵配置詳解

配置項(xiàng)說明推薦值
port 26379哨兵服務(wù)端口通常保持默認(rèn)
sentinel monitor <name> <ip> <port> <quorum>定義監(jiān)控的主節(jié)點(diǎn)根據(jù)網(wǎng)絡(luò)環(huán)境調(diào)整
sentinel down-after-milliseconds <name> 30000主觀下線判定時(shí)間生產(chǎn)環(huán)境建議30-60秒
sentinel failover-timeout <name> 180000故障轉(zhuǎn)移超時(shí)時(shí)間根據(jù)網(wǎng)絡(luò)延遲調(diào)整
sentinel parallel-syncs <name> 1并行同步數(shù)量較大集群可適當(dāng)增加

配置示例

# sentinel.conf
port 26379
sentinel monitor mycluster 10.0.0.1 6379 2
sentinel down-after-milliseconds mycluster 50000
sentinel failover-timeout mycluster 120000
sentinel auth-pass mycluster MySecurePassword
sentinel parallel-syncs mycluster 2

運(yùn)維檢查清單

  1. 啟動(dòng)哨兵

    redis-sentinel /etc/redis/sentinel.conf
  2. 監(jiān)控命令

    redis-cli -p 26379 sentinel masters  # 查看所有監(jiān)控的主節(jié)點(diǎn)
    redis-cli -p 26379 sentinel slaves mymaster  # 查看指定主節(jié)點(diǎn)的從節(jié)點(diǎn)
  3. 故障模擬測(cè)試

    # 模擬主節(jié)點(diǎn)宕機(jī)
    redis-cli -p 6379 DEBUG sleep 60
    # 觀察哨兵日志
    tail -f /var/log/redis/sentinel.log
  4. 客戶端配置

    • 應(yīng)配置連接所有哨兵節(jié)點(diǎn)地址
    • 實(shí)現(xiàn)自動(dòng)故障轉(zhuǎn)移處理邏輯
    • 示例Java客戶端配置:
      JedisSentinelPool pool = new JedisSentinelPool("mymaster",
          new HashSet<String>(Arrays.asList(
              "sentinel1:26379",
              "sentinel2:26379",
              "sentinel3:26379")));

四、分布式同步:Redis Cluster(集群模式)

4.1 集群模式的核心概念

分片機(jī)制詳解

Redis Cluster 使用 CRC16 算法計(jì)算 key 的哈希值,然后對(duì) 16384 取模得到對(duì)應(yīng)的哈希槽。例如:

  • key "user:1001" 的 CRC16 值為 12345,則哈希槽為 12345 % 16384 = 12345
  • key "product:2002" 的 CRC16 值為 54321,則哈希槽為 54321 % 16384 = 54321

哈希槽分配示例:

  • 3 節(jié)點(diǎn)集群:節(jié)點(diǎn)1(0-5460)、節(jié)點(diǎn)2(5461-10922)、節(jié)點(diǎn)3(10923-16383)
  • 5 節(jié)點(diǎn)集群:每個(gè)節(jié)點(diǎn)約 3276 個(gè)槽

主從復(fù)制架構(gòu)

每個(gè)主節(jié)點(diǎn)可以配置多個(gè)從節(jié)點(diǎn),形成多副本保護(hù)。從節(jié)點(diǎn)會(huì):

  • 實(shí)時(shí)同步主節(jié)點(diǎn)數(shù)據(jù)
  • 在主節(jié)點(diǎn)故障時(shí)參與選舉
  • 可配置為可讀副本分擔(dān)讀壓力

客戶端重定向機(jī)制

當(dāng)客戶端訪問錯(cuò)誤節(jié)點(diǎn)時(shí),會(huì)收到兩種重定向響應(yīng):

  1. MOVED:永久重定向,表示槽已遷移到指定節(jié)點(diǎn)
  2. ASK:臨時(shí)重定向,發(fā)生在集群擴(kuò)容/縮容期間

4.2 集群模式的同步邏輯

4.2.1 分片內(nèi)同步優(yōu)化

  • 集群感知復(fù)制
    • 從節(jié)點(diǎn)加入時(shí)通過 CLUSTER MEET 發(fā)現(xiàn)拓?fù)?/li>
    • 只同步所屬分片的槽數(shù)據(jù)
    • 定期交換集群狀態(tài)信息
  • 讀寫分離配置
  • # 允許從節(jié)點(diǎn)處理讀請(qǐng)求
    cluster-replica-ok yes
    • 啟用后,從節(jié)點(diǎn)可以:
    • 響應(yīng)本地持有的槽的讀請(qǐng)求
    • 其他槽請(qǐng)求仍返回 MOVED

4.2.2 故障轉(zhuǎn)移流程詳解

  • 故障檢測(cè)階段
    • 從節(jié)點(diǎn)每秒發(fā)送 PING
    • 超時(shí)后標(biāo)記主節(jié)點(diǎn)為 PFail (Possible Failure)
    • 收集其他節(jié)點(diǎn)的確認(rèn)信息
  • 選舉投票規(guī)則
    • 每個(gè)主節(jié)點(diǎn)有且只有一票
    • 從節(jié)點(diǎn)按以下條件競(jìng)選:
    • 復(fù)制偏移量最新
    • 節(jié)點(diǎn)運(yùn)行時(shí)間最長(zhǎng)
    • 節(jié)點(diǎn)ID字典序最小
  • 數(shù)據(jù)同步階段
    • 新主節(jié)點(diǎn)生成新的復(fù)制ID
    • 其他從節(jié)點(diǎn)執(zhí)行部分重同步(PSYNC)
    • 故障期間寫入使用故障轉(zhuǎn)移標(biāo)記

4.3 集群模式的核心配置與實(shí)戰(zhàn)

配置參數(shù)詳解

配置項(xiàng)推薦值說明
cluster-require-full-coverageno允許部分槽不可用時(shí)集群仍可服務(wù)
cluster-migration-barrier1主節(jié)點(diǎn)最少從節(jié)點(diǎn)數(shù)才開始遷移
cluster-replica-no-failoverno從節(jié)點(diǎn)是否參與故障轉(zhuǎn)移

集群搭建完整流程

準(zhǔn)備階段

# 創(chuàng)建6個(gè)實(shí)例配置
for port in {6379..6384}; do
  mkdir -p /redis/${port}
  cp redis.conf /redis/${port}/
  sed -i "s/port 6379/port ${port}/" /redis/${port}/redis.conf
done

啟動(dòng)節(jié)點(diǎn)

# 啟動(dòng)所有節(jié)點(diǎn)
for port in {6379..6384}; do
  redis-server /redis/${port}/redis.conf
done

創(chuàng)建集群

redis-cli --cluster create \
  127.0.0.1:6379 127.0.0.1:6380 127.0.0.1:6381 \
  127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 \
  --cluster-replicas 1 \
  --cluster-yes

驗(yàn)證集群

# 檢查集群狀態(tài)
redis-cli -p 6379 cluster nodes | grep master
# 測(cè)試數(shù)據(jù)分布
redis-cli -c -p 6379 set foo bar

生產(chǎn)環(huán)境建議

  • 節(jié)點(diǎn)規(guī)劃
    • 至少3個(gè)物理機(jī)部署
    • 每個(gè)物理機(jī)部署主從節(jié)點(diǎn)對(duì)
    • 預(yù)留30%內(nèi)存用于故障轉(zhuǎn)移
  • 監(jiān)控指標(biāo)
    • 槽分布均衡性
    • 節(jié)點(diǎn)間延遲
    • 故障轉(zhuǎn)移次數(shù)
    • 集群狀態(tài)變化
  • 運(yùn)維操作
    • 使用 redis-cli --cluster reshard 進(jìn)行槽遷移
    • 定期執(zhí)行 CLUSTER REPLICATE 調(diào)整拓?fù)?/li>
    • 備份時(shí)使用 CLUSTER SAVECONFIG

五、Redis 同步機(jī)制的常見問題與優(yōu)化方案

5.1 問題1:全量復(fù)制頻繁觸發(fā)

現(xiàn)象表現(xiàn)

從節(jié)點(diǎn)頻繁斷開與重連,每次重連都觸發(fā)全量復(fù)制(RDB文件傳輸),導(dǎo)致主節(jié)點(diǎn)CPU和網(wǎng)絡(luò)帶寬占用過高,影響正常業(yè)務(wù)請(qǐng)求處理。監(jiān)控中可觀察到主節(jié)點(diǎn)CPU使用率周期性飆升,網(wǎng)絡(luò)出口流量激增。

原因分析

  1. 復(fù)制緩沖區(qū)過期:從節(jié)點(diǎn)斷線時(shí)間超過repl-backlog-ttl(默認(rèn)3600秒)后,復(fù)制積壓緩沖區(qū)被清空,無法支持增量復(fù)制
  2. 緩沖區(qū)容量不足:復(fù)制積壓緩沖區(qū)(repl-backlog-size)設(shè)置過小(默認(rèn)16MB),斷線期間的寫操作超出緩沖區(qū)容量
  3. 主節(jié)點(diǎn)標(biāo)識(shí)變更:主節(jié)點(diǎn)runid因重啟等原因變更,導(dǎo)致從節(jié)點(diǎn)保存的replid與主節(jié)點(diǎn)不一致
  4. 網(wǎng)絡(luò)環(huán)境不穩(wěn)定:網(wǎng)絡(luò)抖動(dòng)或帶寬不足導(dǎo)致連接頻繁中斷

優(yōu)化方案

  • 調(diào)整緩沖區(qū)參數(shù)
    • 將repl-backlog-size從16MB調(diào)整為64-128MB(根據(jù)業(yè)務(wù)寫入量計(jì)算:緩沖區(qū)大小=平均寫入速率×最大預(yù)期斷線時(shí)間)
    • 將repl-backlog-ttl從3600秒延長(zhǎng)至86400秒(1天)
  • 保障主節(jié)點(diǎn)穩(wěn)定性
    • 主節(jié)點(diǎn)配置appendonly yes,開啟AOF持久化
    • 使用config set命令動(dòng)態(tài)調(diào)整參數(shù),避免重啟
    • 部署主節(jié)點(diǎn)高可用方案(如哨兵)
  • 網(wǎng)絡(luò)優(yōu)化
    • 主從節(jié)點(diǎn)部署在同一機(jī)房或可用區(qū)
    • 使用專線連接跨機(jī)房節(jié)點(diǎn)
    • 避免在網(wǎng)絡(luò)擁堵時(shí)段進(jìn)行部署或維護(hù)
  • 監(jiān)控與告警
    • 監(jiān)控info replication中的connected_slaves和master_repl_offset
    • 設(shè)置全量復(fù)制次數(shù)閾值告警

5.2 問題2:從節(jié)點(diǎn)同步延遲高

現(xiàn)象表現(xiàn)

從節(jié)點(diǎn)數(shù)據(jù)與主節(jié)點(diǎn)差距較大,通過info replication查看master_repl_offset與slave_repl_offset差值持續(xù)增大,從節(jié)點(diǎn)讀取到舊數(shù)據(jù)。在電商秒殺等高并發(fā)場(chǎng)景下,可能導(dǎo)致庫存超賣等問題。

原因分析

  1. 主節(jié)點(diǎn)寫入壓力大:QPS過高導(dǎo)致命令傳播不及時(shí)
  2. TCP緩沖延遲:repl-disable-tcp-nodelay設(shè)為no(默認(rèn))時(shí),TCP會(huì)緩沖數(shù)據(jù)導(dǎo)致延遲
  3. 從節(jié)點(diǎn)性能瓶頸
    • CPU資源不足,無法及時(shí)處理命令
    • 內(nèi)存不足,頻繁觸發(fā)swap
    • 磁盤IO性能差(RDB加載慢)
  4. 從節(jié)點(diǎn)數(shù)量過多:?jiǎn)蝹€(gè)主節(jié)點(diǎn)掛載過多從節(jié)點(diǎn)(>5個(gè))

優(yōu)化方案

  • 網(wǎng)絡(luò)傳輸優(yōu)化
    • 從節(jié)點(diǎn)配置repl-disable-tcp-nodelay yes
    • 調(diào)整TCP內(nèi)核參數(shù)(net.ipv4.tcp_slow_start_after_idle=0)
  • 架構(gòu)優(yōu)化
    • 使用Redis Cluster分散寫入壓力
    • 實(shí)現(xiàn)讀寫分離,將讀請(qǐng)求分散到多個(gè)從節(jié)點(diǎn)
    • 限制單個(gè)主節(jié)點(diǎn)的從節(jié)點(diǎn)數(shù)量(建議≤5)
  • 硬件升級(jí)
    • 為從節(jié)點(diǎn)配置多核CPU(≥8核)
    • 使用SSD替代HDD
    • 增加內(nèi)存容量,避免swap
  • 監(jiān)控措施
    • 實(shí)時(shí)監(jiān)控slave_repl_offset差值
    • 設(shè)置延遲閾值告警(如>100MB)

5.3 問題3:主從數(shù)據(jù)不一致

現(xiàn)象表現(xiàn)

主節(jié)點(diǎn)執(zhí)行寫命令后,部分從節(jié)點(diǎn)未同步該命令,導(dǎo)致主從數(shù)據(jù)差異。通過redis-cli的diff命令可以檢測(cè)到不一致的鍵值,在金融交易等場(chǎng)景可能導(dǎo)致嚴(yán)重問題。

原因分析

  1. 異步復(fù)制特性:Redis默認(rèn)采用異步復(fù)制,主節(jié)點(diǎn)宕機(jī)可能導(dǎo)致數(shù)據(jù)丟失
  2. 從節(jié)點(diǎn)誤寫入:replica-read-only配置為no(默認(rèn)yes)時(shí),從節(jié)點(diǎn)可能被誤寫入
  3. 網(wǎng)絡(luò)分區(qū):部分從節(jié)點(diǎn)長(zhǎng)時(shí)間無法連接主節(jié)點(diǎn)
  4. 命令傳播失敗:主節(jié)點(diǎn)在命令傳播過程中崩潰

優(yōu)化方案

  • 一致性配置
min-replicas-to-write 2
min-replicas-max-lag 10
  • 表示至少2個(gè)從節(jié)點(diǎn)延遲不超過10秒才允許寫入
  • 從節(jié)點(diǎn)保護(hù)
    • 強(qiáng)制所有從節(jié)點(diǎn)配置replica-read-only yes
    • 定期檢查從節(jié)點(diǎn)配置
  • 高可用部署
    • 部署Redis Sentinel自動(dòng)故障轉(zhuǎn)移
    • 使用Redis Cluster分區(qū)容錯(cuò)
    • 跨機(jī)房部署時(shí)考慮網(wǎng)絡(luò)分區(qū)場(chǎng)景
  • 數(shù)據(jù)校驗(yàn)機(jī)制
# 集群模式檢查
redis-cli --cluster check <host>:<port>

# 主從數(shù)據(jù)對(duì)比
redis-cli -h master --scan | while read key; do
  diff=$(redis-cli -h master GET "$key" | diff - <(redis-cli -h slave GET "$key"))
  [ -n "$diff" ] && echo "$key: $diff"
done
  • 定期修復(fù)
    • 設(shè)置定時(shí)任務(wù)校驗(yàn)數(shù)據(jù)一致性
    • 發(fā)現(xiàn)不一致時(shí)觸發(fā)從節(jié)點(diǎn)resync

5.4 問題4:集群模式哈希槽遷移導(dǎo)致同步中斷

現(xiàn)象表現(xiàn)

在Redis Cluster擴(kuò)容/縮容時(shí),執(zhí)行CLUSTER SETSLOT MIGRATING/IMPORTING命令遷移哈希槽過程中,部分從節(jié)點(diǎn)同步中斷,客戶端請(qǐng)求返回MOVED/ASK重定向錯(cuò)誤。

原因分析

  1. 數(shù)據(jù)變更頻繁:遷移過程中大量鍵被修改,增量復(fù)制壓力大
  2. 網(wǎng)絡(luò)波動(dòng):遷移期間網(wǎng)絡(luò)不穩(wěn)定導(dǎo)致連接中斷
  3. 資源競(jìng)爭(zhēng):遷移過程占用大量CPU和網(wǎng)絡(luò)資源
  4. 配置不一致:遷移后集群拓?fù)湫畔⑽醇皶r(shí)同步

優(yōu)化方案

  • 遷移時(shí)機(jī)選擇
    • 選擇業(yè)務(wù)低峰期(如凌晨2-4點(diǎn))執(zhí)行遷移
    • 監(jiān)控QPS和系統(tǒng)負(fù)載,在負(fù)載較低時(shí)操作
  • 參數(shù)調(diào)優(yōu)
    • 遷移前調(diào)大repl-backlog-size(如調(diào)整為256MB)
    • 設(shè)置cluster-node-timeout(默認(rèn)15秒)為更合理的值
  • 遷移過程控制
# 分批遷移鍵空間
redis-cli --cluster rebalance \
  --cluster-weight node1=1 node2=0 \
  --cluster-use-empty-masters
  • 監(jiān)控與恢復(fù)
    • 使用cluster slots實(shí)時(shí)監(jiān)控遷移進(jìn)度
    • 遷移完成后檢查所有節(jié)點(diǎn)cluster_state狀態(tài)
    • 對(duì)同步中斷的從節(jié)點(diǎn)執(zhí)行cluster failover強(qiáng)制重新同步
  • 客戶端處理
    • 客戶端實(shí)現(xiàn)ASK/MOVED重試邏輯
    • 使用Redis集群代理屏蔽復(fù)雜度

六、Redis 同步機(jī)制的選型建議

1. 主從復(fù)制(Replication)

適用場(chǎng)景

  • 單機(jī)擴(kuò)展、讀寫分離
  • 數(shù)據(jù)備份容災(zāi)
  • 測(cè)試/開發(fā)環(huán)境

推薦方案: 主從復(fù)制 + 讀寫分離(1主多從)

優(yōu)勢(shì)

  • 配置簡(jiǎn)單(通過replicaof命令即可完成)
  • 性能開銷低(異步復(fù)制)
  • 從節(jié)點(diǎn)可分擔(dān)讀請(qǐng)求(如QPS 10萬+的場(chǎng)景)

劣勢(shì)

  • 主節(jié)點(diǎn)宕機(jī)需人工切換(需要運(yùn)維介入)
  • 可用性較低(無自動(dòng)故障轉(zhuǎn)移)
  • 數(shù)據(jù)延遲(異步復(fù)制導(dǎo)致)

典型應(yīng)用: 電商商品詳情頁緩存、新聞資訊類應(yīng)用

2. 哨兵模式(Sentinel)

適用場(chǎng)景

  • 高可用需求
  • 自動(dòng)故障轉(zhuǎn)移
  • 7x24小時(shí)服務(wù)

推薦方案: 至少3個(gè)哨兵節(jié)點(diǎn)+1主2從

優(yōu)勢(shì)

  • 自動(dòng)監(jiān)控和故障轉(zhuǎn)移(30秒內(nèi)完成切換)
  • 支持通知機(jī)制(可通過API對(duì)接監(jiān)控系統(tǒng))
  • 配置中心(自動(dòng)更新客戶端連接信息)

劣勢(shì)

  • 僅支持單主架構(gòu)(寫入瓶頸)
  • 無法解決數(shù)據(jù)分片問題
  • 腦裂問題需要特殊處理

配置示例

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000

3. 集群模式(Cluster)

適用場(chǎng)景

  • 大數(shù)據(jù)量(TB級(jí))
  • 高并發(fā)寫入
  • 需要水平擴(kuò)展

推薦方案: 至少3主3從(官方推薦)

優(yōu)勢(shì)

  • 自動(dòng)數(shù)據(jù)分片(16384個(gè)slot)
  • 支持水平擴(kuò)展(可動(dòng)態(tài)增刪節(jié)點(diǎn))
  • 高可用(主從自動(dòng)切換)

劣勢(shì)

  • 配置復(fù)雜(需要規(guī)劃槽位分配)
  • 客戶端需要支持集群協(xié)議
  • 跨slot操作受限(如事務(wù)、Lua腳本)

性能指標(biāo)

  • 單節(jié)點(diǎn):8-10萬QPS
  • 集群:線性擴(kuò)展(如10節(jié)點(diǎn)可達(dá)80-100萬QPS)

最終建議:

中小規(guī)模業(yè)務(wù)(數(shù)據(jù)量 <10GB,讀多寫少)

方案:主從復(fù)制 + 哨兵模式 實(shí)施要點(diǎn)

  1. 部署1主2從架構(gòu)
  2. 配置3個(gè)哨兵節(jié)點(diǎn)
  3. 設(shè)置合理的down-after-milliseconds(建議5000ms)
  4. 客戶端實(shí)現(xiàn)自動(dòng)重連機(jī)制
大規(guī)模業(yè)務(wù)(數(shù)據(jù)量 > 10GB,高并發(fā))

方案:集群模式 實(shí)施步驟

  1. 使用redis-cli --cluster create初始化集群
  2. 確保每個(gè)主節(jié)點(diǎn)有1-2個(gè)從節(jié)點(diǎn)
  3. 配置cluster-require-full-coverage為no
  4. 監(jiān)控集群狀態(tài)(cluster nodes/cluster info)
對(duì)數(shù)據(jù)一致性要求極高的業(yè)務(wù)(如金融支付)

增強(qiáng)方案

  1. 在集群模式基礎(chǔ)上:
    • 設(shè)置min-replicas-to-write 2
    • 配置min-replicas-max-lag 10
  2. 定期校驗(yàn):
    • 使用redis-check-aof工具
    • 實(shí)現(xiàn)CRC校驗(yàn)機(jī)制
  3. 建議搭配:
    • 持久化采用AOF+fsync everysec
    • 部署跨機(jī)房容災(zāi)方案

到此這篇關(guān)于Redis 同步機(jī)制解析的文章就介紹到這了,更多相關(guān)Redis 同步機(jī)制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Redis之RedisTemplate配置方式(序列和反序列化)

    Redis之RedisTemplate配置方式(序列和反序列化)

    這篇文章主要介紹了Redis之RedisTemplate配置方式(序列和反序列化),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Redis數(shù)據(jù)庫原理深入刨析

    Redis數(shù)據(jù)庫原理深入刨析

    在之前的文章我們介紹過,Redis服務(wù)器在啟動(dòng)之初,會(huì)初始化RedisServer的實(shí)例,在這個(gè)實(shí)例中存在很多重要的屬性結(jié)構(gòu),同理本篇博客中介紹的數(shù)據(jù)庫實(shí)現(xiàn)原理也會(huì)和其中的某些屬性相關(guān),我們繼續(xù)看一下吧
    2022-11-11
  • 一文帶你了解Redis中RDB與AOF的區(qū)別

    一文帶你了解Redis中RDB與AOF的區(qū)別

    Redis 在持久化時(shí),給我們提供了兩種方式,這兩種方式就是 RDB 與 AOF,那這兩種方式有什么區(qū)別呢,本文就帶大家詳細(xì)的了解一下二者的區(qū)別,需要的朋友可以參考下
    2023-06-06
  • 使用Redis實(shí)現(xiàn)秒殺功能的簡(jiǎn)單方法

    使用Redis實(shí)現(xiàn)秒殺功能的簡(jiǎn)單方法

    這篇文章主要給大家介紹了關(guān)于使用Redis實(shí)現(xiàn)秒殺功能的簡(jiǎn)單方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Redis作為分布式鎖的使用詳解

    Redis作為分布式鎖的使用詳解

    這篇文章主要介紹了Redis作為分布式鎖的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2025-05-05
  • 詳談redis跟數(shù)據(jù)庫的數(shù)據(jù)同步問題

    詳談redis跟數(shù)據(jù)庫的數(shù)據(jù)同步問題

    文章討論了在Redis和數(shù)據(jù)庫數(shù)據(jù)一致性問題上的解決方案,主要比較了先更新Redis緩存再更新數(shù)據(jù)庫和先更新數(shù)據(jù)庫再更新Redis緩存兩種方案,文章指出,刪除Redis緩存后再更新數(shù)據(jù)庫的方案更優(yōu),因?yàn)樗梢员苊鈹?shù)據(jù)不一致的問題,但可能產(chǎn)生高并發(fā)問題
    2025-01-01
  • RedisDesktopManager遠(yuǎn)程連接redis的實(shí)現(xiàn)

    RedisDesktopManager遠(yuǎn)程連接redis的實(shí)現(xiàn)

    本文主要介紹了RedisDesktopManager遠(yuǎn)程連接redis的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • Redis IP地址的綁定的實(shí)現(xiàn)

    Redis IP地址的綁定的實(shí)現(xiàn)

    這篇文章主要介紹了Redis IP地址的綁定的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • Redis分片集群的實(shí)現(xiàn)方法

    Redis分片集群的實(shí)現(xiàn)方法

    Redis Cluster是Redis官方提供的分布式解決方案,它不是像哨兵那樣只負(fù)責(zé)高可用切換,而是同時(shí)解決了數(shù)據(jù)分片和高可用兩個(gè)問題,感興趣的可以了解一下
    2025-08-08
  • redis5集群如何主動(dòng)手工切換主從節(jié)點(diǎn)命令

    redis5集群如何主動(dòng)手工切換主從節(jié)點(diǎn)命令

    這篇文章主要介紹了redis5集群如何主動(dòng)手工切換主從節(jié)點(diǎn)命令,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01

最新評(píng)論

江北区| 德庆县| 宁城县| 新平| 阳曲县| 柞水县| 洪泽县| 蓝田县| 苏尼特左旗| 水城县| 万盛区| 绥化市| 昌乐县| 崇明县| 都兰县| 湖口县| 正阳县| 昌江| 广丰县| 朝阳区| 资阳市| 临江市| 原阳县| 澄城县| 永定县| 沁水县| 富锦市| 海南省| 开江县| 墨脱县| 永胜县| 大宁县| 扬中市| 东辽县| 新闻| 饶河县| 茂名市| 商河县| 江北区| 巩义市| 黎平县|