日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

同步Redis后出現(xiàn)數(shù)據(jù)不一致

更新時(shí)間:

本文介紹判斷或排查同步Redis出現(xiàn)數(shù)據(jù)不一致的方法。

問(wèn)題描述

使用數(shù)據(jù)傳輸服務(wù)(DTS)同步Redis后,出現(xiàn)了源端和目標(biāo)端數(shù)據(jù)不一致的現(xiàn)象。

問(wèn)題示例

使用數(shù)據(jù)傳輸服務(wù)(DTS)同步完Redis后,使用Redis的info keyspace命令查看源端和目標(biāo)端的keys情況,出現(xiàn)源端和目標(biāo)端數(shù)據(jù)不一致,且含過(guò)期時(shí)間的keys占很大比重。如下圖:

含過(guò)期時(shí)間的key占很大比重

可能原因

單靠info keyspaceexpires來(lái)判斷數(shù)據(jù)是否一致會(huì)出現(xiàn)偏差。其統(tǒng)計(jì)信息的統(tǒng)計(jì)值不是精確值,有一定的誤差。

  • info keyspace的輸出結(jié)果中:

    • keys表示所有keys的數(shù)據(jù)量。

    • expires表示帶有過(guò)期keys的數(shù)據(jù)量,包含未過(guò)期和已過(guò)期的keys的數(shù)量。

因此,通過(guò)expires來(lái)判斷數(shù)據(jù)量時(shí),邏輯上已經(jīng)過(guò)期但未被Redis刪除的keys也會(huì)被統(tǒng)計(jì)進(jìn)來(lái),從而出現(xiàn)了源端和目標(biāo)端的數(shù)據(jù)不一致的現(xiàn)象。

說(shuō)明

Redis處理過(guò)期keys的時(shí)機(jī)主要為以下幾種:

  • CPU空閑時(shí)清理過(guò)期keys。

  • 實(shí)際訪問(wèn)keys時(shí)會(huì)判斷keys是否過(guò)期,并逐出過(guò)期keys。

  • Scan命令掃描時(shí)判斷keys是否過(guò)期,并逐出過(guò)期keys。

關(guān)于Redis的詳細(xì)清理策略,參考:Redis過(guò)期Key的處理

解決方法

建議可通過(guò)以下2種方法判斷數(shù)據(jù)是否一致:

說(shuō)明

同步Redis數(shù)據(jù)的任務(wù),若想看同步之后數(shù)據(jù)是否有丟失,需要看源數(shù)據(jù)keys是否已經(jīng)過(guò)期。已過(guò)期的數(shù)據(jù)也會(huì)被統(tǒng)計(jì)到expires中,因此,不能單靠expires去判斷數(shù)據(jù)的一致性。

  1. 對(duì)比A(源庫(kù)keys數(shù)量減去expires后得到的數(shù)量)與B(目標(biāo)庫(kù)keys數(shù)量減去expires后得到的數(shù)量),若A和B的差值很小,則可判斷數(shù)據(jù)一致。

  2. 用redis-full-check校驗(yàn)。具體方法可參考:redis-full-check工具的使用

說(shuō)明

如何讓Redis info keyspace統(tǒng)計(jì)的內(nèi)存使用量、數(shù)據(jù)量看起來(lái)一致?

建議清除過(guò)期的Redis數(shù)據(jù),云數(shù)據(jù)庫(kù)和自建數(shù)據(jù)庫(kù)的方法如下:

  • 云數(shù)據(jù)庫(kù) Tair(兼容 Redis):登錄云數(shù)據(jù)庫(kù) Tair(兼容 Redis)控制臺(tái),執(zhí)行清除數(shù)據(jù)操作。清除數(shù)據(jù)

  • 自建Redis數(shù)據(jù)庫(kù):使用redis-full-check做校驗(yàn),檢驗(yàn)的過(guò)程中執(zhí)行SCAN 等命令觸發(fā)過(guò)期數(shù)據(jù)清理動(dòng)作。