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

解讀redis?slaveof命令執(zhí)行后為什么需要清庫(kù)重新同步

 更新時(shí)間:2025年04月08日 09:31:41   作者:學(xué)會(huì)了沒(méi)  
這篇文章主要介紹了redis?slaveof命令執(zhí)行后為什么需要清庫(kù)重新同步,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

在 Redis 中,執(zhí)行 SLAVEOF(或 REPLICAOF)命令后,從節(jié)點(diǎn)需要清空現(xiàn)有數(shù)據(jù)并重新同步的主要原因如下:

1. 保證數(shù)據(jù)一致性

核心目標(biāo):確保從節(jié)點(diǎn)的數(shù)據(jù)與主節(jié)點(diǎn) 完全一致

問(wèn)題場(chǎng)景

  • 如果從節(jié)點(diǎn)之前有其他數(shù)據(jù)(例如曾是其他主節(jié)點(diǎn)的副本,或自身是獨(dú)立主節(jié)點(diǎn)),直接保留數(shù)據(jù)會(huì)導(dǎo)致新舊數(shù)據(jù)混合。
  • 主節(jié)點(diǎn)的數(shù)據(jù)狀態(tài)可能與從節(jié)點(diǎn)存在沖突(例如相同的鍵但值不同),導(dǎo)致數(shù)據(jù)邏輯錯(cuò)誤。

2. 全量同步的觸發(fā)條件

當(dāng)從節(jié)點(diǎn)執(zhí)行 SLAVEOF 連接到主節(jié)點(diǎn)時(shí),Redis 會(huì)觸發(fā)以下兩種同步機(jī)制:

(1) 全量同步(Full Sync)

觸發(fā)條件

  • 從節(jié)點(diǎn)是首次連接到主節(jié)點(diǎn)。
  • 主從的復(fù)制 ID 不匹配(例如主節(jié)點(diǎn)發(fā)生過(guò)故障轉(zhuǎn)移)。
  • 從節(jié)點(diǎn)的復(fù)制偏移量(repl_offset 不在主節(jié)點(diǎn)的復(fù)制積壓緩沖區(qū)(repl_backlog)范圍內(nèi)。

操作流程

  1. 主節(jié)點(diǎn)生成當(dāng)前數(shù)據(jù)的 RDB 快照,發(fā)送給從節(jié)點(diǎn)。
  2. 從節(jié)點(diǎn)清空自身數(shù)據(jù),加載 RDB 文件。
  3. 主節(jié)點(diǎn)將生成 RDB 期間的新寫入命令緩存,待 RDB 傳輸完成后發(fā)送給從節(jié)點(diǎn)(增量同步)。

(2) 部分同步(Partial Sync)

觸發(fā)條件

  • 主從的復(fù)制 ID 一致。
  • 從節(jié)點(diǎn)的復(fù)制偏移量仍在主節(jié)點(diǎn)的 repl_backlog 范圍內(nèi)。

操作流程

  1. 主節(jié)點(diǎn)直接發(fā)送從節(jié)點(diǎn)缺失的增量命令(無(wú)需清空數(shù)據(jù))。
  2. 從節(jié)點(diǎn)應(yīng)用這些命令,追上主節(jié)點(diǎn)狀態(tài)。

3. 清空數(shù)據(jù)的必要性

  • 全量同步必須清空數(shù)據(jù)

從節(jié)點(diǎn)需要以主節(jié)點(diǎn)的 RDB 快照為基準(zhǔn)重建數(shù)據(jù)集,若保留原有數(shù)據(jù),會(huì)導(dǎo)致數(shù)據(jù)不一致。

# 示例:從節(jié)點(diǎn)加載 RDB 前自動(dòng)執(zhí)行 FLUSHALL
[從節(jié)點(diǎn)日志]
MASTER <-> REPLICA sync: Flushing old data
  • 部分同步無(wú)需清空數(shù)據(jù)

增量命令是基于從節(jié)點(diǎn)已有的數(shù)據(jù)狀態(tài)追加的,因此保留數(shù)據(jù)是安全的。

4. 數(shù)據(jù)一致性的風(fēng)險(xiǎn)

場(chǎng)景風(fēng)險(xiǎn)
不清空數(shù)據(jù) + 全量同步主節(jié)點(diǎn) RDB 數(shù)據(jù)與從節(jié)點(diǎn)舊數(shù)據(jù)混合,導(dǎo)致鍵覆蓋、過(guò)期時(shí)間錯(cuò)亂等問(wèn)題。
不清空數(shù)據(jù) + 部分同步僅當(dāng)復(fù)制 ID 和偏移量匹配時(shí)安全,否則數(shù)據(jù)可能不完整或邏輯沖突。

如何避免全量同步(減少清庫(kù)開(kāi)銷)

(1) 合理配置 repl-backlog-size

  • 增大主節(jié)點(diǎn)的復(fù)制積壓緩沖區(qū)(默認(rèn) 1MB),允許更長(zhǎng)時(shí)間的斷線后仍能觸發(fā)部分同步:
# 主節(jié)點(diǎn)配置(redis.conf)
repl-backlog-size 64mb  # 根據(jù)業(yè)務(wù)寫入量調(diào)整

(2) 避免頻繁主從切換

  • 減少主節(jié)點(diǎn)故障轉(zhuǎn)移次數(shù)(如優(yōu)化 Sentinel 參數(shù) down-after-milliseconds),避免復(fù)制 ID 變更。

(3) 持久化復(fù)制 ID 和偏移量

  • 從節(jié)點(diǎn)重啟時(shí),若復(fù)制 ID 和偏移量仍有效,可觸發(fā)部分同步:
# 從節(jié)點(diǎn)配置(redis.conf)
repl-diskless-sync no  # 啟用磁盤備份(默認(rèn))

示例:同步流程的日志分析

(1) 全量同步日志

# 主節(jié)點(diǎn)日志
[19042] 01 Jan 12:00:00.123 * Replica 127.0.0.1:6380 asks for synchronization
[19042] 01 Jan 12:00:00.123 * Full resync requested by replica 127.0.0.1:6380
[19042] 01 Jan 12:00:00.123 * Starting BGSAVE for SYNC with target: disk

# 從節(jié)點(diǎn)日志
[19043] 01 Jan 12:00:00.125 * MASTER <-> REPLICA sync started
[19043] 01 Jan 12:00:00.125 * MASTER <-> REPLICA sync: Flushing old data
[19043] 01 Jan 12:00:00.125 * MASTER <-> REPLICA sync: Loading DB in memory

(2) 部分同步日志

# 主節(jié)點(diǎn)日志
[19042] 01 Jan 12:00:00.123 * Replica 127.0.0.1:6380 requests partial resynchronization
[19042] 01 Jan 12:00:00.123 * Partial resynchronization request accepted

# 從節(jié)點(diǎn)日志
[19043] 01 Jan 12:00:00.125 * MASTER <-> REPLICA sync: Master accepted a Partial Resynchronization

總結(jié)

  • 全量同步必須清空數(shù)據(jù):確保從節(jié)點(diǎn)以主節(jié)點(diǎn)的 RDB 快照為基準(zhǔn),避免數(shù)據(jù)不一致。
  • 部分同步無(wú)需清空:基于復(fù)制積壓緩沖區(qū)的增量命令追加,保留數(shù)據(jù)安全。
  • 優(yōu)化建議:通過(guò)調(diào)整 repl-backlog-size 和減少主從切換頻率,盡量避免全量同步,降低清庫(kù)對(duì)服務(wù)的影響。

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Redis實(shí)現(xiàn)驗(yàn)證碼發(fā)送并限制每日發(fā)送次數(shù)的示例代碼

    Redis實(shí)現(xiàn)驗(yàn)證碼發(fā)送并限制每日發(fā)送次數(shù)的示例代碼

    本文主要介紹了Redis實(shí)現(xiàn)驗(yàn)證碼發(fā)送并限制每日發(fā)送次數(shù)的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Redis migrate數(shù)據(jù)遷移工具的使用教程

    Redis migrate數(shù)據(jù)遷移工具的使用教程

    這篇文章主要給大家介紹了關(guān)于Redis migrate數(shù)據(jù)遷移工具的使用教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Redis過(guò)期策略和內(nèi)存淘汰策略在實(shí)際場(chǎng)景中的用法及說(shuō)明

    Redis過(guò)期策略和內(nèi)存淘汰策略在實(shí)際場(chǎng)景中的用法及說(shuō)明

    Redis通過(guò)過(guò)期策略(定時(shí)、惰性、定期刪除)和內(nèi)存淘汰策略(如LRU、隨機(jī)、TTL優(yōu)先)管理內(nèi)存,根據(jù)業(yè)務(wù)需求選擇策略,結(jié)合監(jiān)控實(shí)現(xiàn)動(dòng)態(tài)優(yōu)化,確保高效緩存與資源平衡
    2025-08-08
  • 關(guān)于Redis?bigkeys命令會(huì)阻塞問(wèn)題的解決

    關(guān)于Redis?bigkeys命令會(huì)阻塞問(wèn)題的解決

    這篇文章主要介紹了關(guān)于Redis?bigkeys命令會(huì)阻塞問(wèn)題的解決,今天分享一次Redis引發(fā)的線上事故,避免再次踩雷,實(shí)現(xiàn)快速入門,需要的朋友可以參考下
    2023-03-03
  • Redis數(shù)據(jù)持久化方式技術(shù)解析

    Redis數(shù)據(jù)持久化方式技術(shù)解析

    Redis(Remote Dictionary Server ),即遠(yuǎn)程字典服務(wù),是一個(gè)開(kāi)源的使用ANSI C語(yǔ)言編寫、支持網(wǎng)絡(luò)、可基于內(nèi)存亦可持久化的日志型、Key-Value數(shù)據(jù)庫(kù),并提供多種語(yǔ)言的API
    2021-09-09
  • 使用注解實(shí)現(xiàn)Redis緩存功能

    使用注解實(shí)現(xiàn)Redis緩存功能

    這篇文章主要為大家詳細(xì)介紹了使用注解實(shí)現(xiàn)Redis緩存功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • Redis實(shí)現(xiàn)每日簽到功能(大數(shù)據(jù)量)

    Redis實(shí)現(xiàn)每日簽到功能(大數(shù)據(jù)量)

    在面對(duì)百萬(wàn)級(jí)用戶簽到情況下,傳統(tǒng)數(shù)據(jù)庫(kù)存儲(chǔ)和判斷會(huì)遇到瓶頸,使用Redis的二進(jìn)制數(shù)據(jù)類型可實(shí)現(xiàn)高效的簽到功能,示例代碼展示了如何調(diào)用這些功能,包括當(dāng)天簽到、補(bǔ)簽以及查詢簽到記錄,PHP結(jié)合Redis二進(jìn)制數(shù)據(jù)類型可有效處理大數(shù)據(jù)量下的簽到問(wèn)題
    2024-10-10
  • 淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場(chǎng)景

    淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場(chǎng)景

    這篇文章主要介紹了淺談redis五大數(shù)據(jù)結(jié)構(gòu)和使用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04
  • Redis中List實(shí)現(xiàn)雙鏈表

    Redis中List實(shí)現(xiàn)雙鏈表

    本文主要介紹了Redis中List實(shí)現(xiàn)雙鏈表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Redis實(shí)現(xiàn)客戶端緩存的4種方式

    Redis實(shí)現(xiàn)客戶端緩存的4種方式

    客戶端緩存是指在應(yīng)用程序內(nèi)存中維護(hù)一份Redis數(shù)據(jù)的本地副本,以減少網(wǎng)絡(luò)請(qǐng)求次數(shù),降低延遲,并減輕Redis服務(wù)器負(fù)擔(dān),本文將分享Redis客戶端緩存的四種實(shí)現(xiàn)方式,大家可以參考一下
    2025-05-05

最新評(píng)論

阿克陶县| 木里| 金秀| 彝良县| 泰顺县| 永康市| 祁连县| 乾安县| 太保市| 资中县| 祁阳县| 沭阳县| 青龙| 南木林县| 横山县| 宜城市| 宿州市| 东阳市| 湘阴县| 融水| 岳西县| 额济纳旗| 六枝特区| 安溪县| 清苑县| 海原县| 宾阳县| 九台市| 宁化县| 锦屏县| 福海县| 五常市| 鄂托克前旗| 万荣县| 乌拉特中旗| 望城县| 新绛县| 科技| 中宁县| 卓尼县| 乐东|