婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > redis學習之RDB、AOF與復制時對過期鍵的處理教程

redis學習之RDB、AOF與復制時對過期鍵的處理教程

熱門標簽:高碑店市地圖標注app 400電話辦理的口碑 南京手機外呼系統廠家 一個地圖標注多少錢 臺灣電銷 地圖標注工廠入駐 b2b外呼系統 廊坊外呼系統在哪買 四川穩定外呼系統軟件

生成RDB文件

在執行SAVE命令或者BGSAVE命令創建一個新的RDB文件時,程序會對數據庫中的鍵進行檢查,已過期的鍵不會被保存到新創建的RDB文件中。

舉個例子,如果數據庫中包含三個鍵k1、k2、k3,并且k2已經過期,那么當執行SAVE命令或者BGSAVE命令時,程序只會將k1和k3的數據保存到RDB文件中,而k2則會被忽略。

因此,數據庫中包含過期鍵不會對生成新的RDB文件造成影響。

可參考rdb.c中函數rdbSave()函數源碼:

/* Iterate this DB writing every entry 
   *
   * 遍歷數據庫,并寫入每個鍵值對的數據
   */
  while((de = dictNext(di)) != NULL) {
   sds keystr = dictGetKey(de);
   robj key, *o = dictGetVal(de);
   long long expire;
   
   // 根據 keystr ,在棧中創建一個 key 對象
   initStaticStringObject(key,keystr);

   // 獲取鍵的過期時間
   expire = getExpire(db,key);

   // 保存鍵值對數據
   if (rdbSaveKeyValuePair(rdb,key,o,expire,now) == -1) goto werr;
  }

rdbSaveKeyValuePair函數實現如下:

/* Save a key-value pair, with expire time, type, key, value.
 *
 * 將鍵值對的鍵、值、過期時間和類型寫入到 RDB 中。
 *
 * On error -1 is returned.
 *
 * 出錯返回 -1 。
 *
 * On success if the key was actually saved 1 is returned, otherwise 0
 * is returned (the key was already expired). 
 *
 * 成功保存返回 1 ,當鍵已經過期時,返回 0 。
 */
int rdbSaveKeyValuePair(rio *rdb, robj *key, robj *val,
      long long expiretime, long long now)
{
 /* Save the expire time 
  *
  * 保存鍵的過期時間
  */
 if (expiretime != -1) {
  /* If this key is already expired skip it 
   *
   * 不寫入已經過期的鍵
   */
  if (expiretime  now) return 0;

  if (rdbSaveType(rdb,REDIS_RDB_OPCODE_EXPIRETIME_MS) == -1) return -1;
  if (rdbSaveMillisecondTime(rdb,expiretime) == -1) return -1;
 }
 /* Save type, key, value 
  *
  * 保存類型,鍵,值
  */
 if (rdbSaveObjectType(rdb,val) == -1) return -1;
 if (rdbSaveStringObject(rdb,key) == -1) return -1;
 if (rdbSaveObject(rdb,val) == -1) return -1;
 return 1;
}

載入RDB文件

在啟動Redis服務器時,如果服務器開啟了RDB功能,那么服務器將對RDB文件進行載入:

  • 如果服務器以主服務器模式運行,那么在載入RDB文件時,程序會對文件中保存的鍵進行檢查,未過期的鍵會被載入到數據庫中,而過期鍵則會被忽略,所以過期鍵對載入RDB文件的主服務器不會造成影響;
  • 如果服務器以從服務器模式運行,那么在載入RDB文件時,文件中保存的所有鍵,不論是否過期,都會被載入到數據庫中。不過,因為主從服務器在進行數據同步的時候,從服務器的數據庫就會被清空,所以一般來講,過期鍵對載入RDB文件的從服務器也不會造成影響;

這部分代碼可以查看rdb.c中rdbLoad()函數源碼:

/* Check if the key already expired. This function is used when loading
   * an RDB file from disk, either at startup, or when an RDB was
   * received from the master. In the latter case, the master is
   * responsible for key expiry. If we would expire keys here, the
   * snapshot taken by the master may not be reflected on the slave. 
   *
   * 如果服務器為主節點的話,
   * 那么在鍵已經過期的時候,不再將它們關聯到數據庫中去
   */
  if (server.masterhost == NULL  expiretime != -1  expiretime  now) {
   decrRefCount(key);
   decrRefCount(val);
   // 跳過
   continue;
  }

AOF文件寫入

當服務器以AOF持久化模式運行時,如果數據庫中的某個鍵已經過期,但它還沒有被惰性刪除或者定期刪除,那么AOF文件不會因為這個過期鍵而產生任何影響。

當過期鍵被惰性刪除或者定期刪除之后,程序會向AOF文件追加(append)一條DEL命令,來顯式地記錄該鍵已被刪除。
舉個例子,如果客戶端使用GET message命令,試圖訪問過期的message鍵,那么服務器將執行以下三個動作:

1)從數據庫中刪除message鍵。

2)追加一條DEL message命令到AOF文件。(根據AOF文件增加的特點,AOF只有在客戶端進行請求的時候才會有這個DEL操作)

3)向執行GET命令的客戶端返回空回復。

這部分就是Redis中的惰性刪除策略中expireIfNeeded函數的使用。關于惰性刪除策略這一部分在Redis惰性刪除策略一篇中有講。所以這里就不贅述了。

需要提示一下的是:expireIfNeeded函數是在db.c/lookupKeyRead()函數中被調用,lookupKeyRead函數用于在執行讀取操作時取出鍵key在數據庫db中的值。

 AOF重寫

和生成RDB文件時類似,在執行AOF重寫的過程中,程序會對數據庫中的鍵進行檢查,已過期的鍵不會被保存到重寫后的AOF文件中。

舉個例子,如果數據庫中包含三個鍵k1、k2、k3,并且k2已經過期,那么在進行重寫工作時,程序只會對k1和k3進行重寫,而k2則會被忽略。

這一部分如果掌握了AOF重寫的方法的話,那就自然理解了。

復制

當服務器運行在復制模式下時,從服務器的過期鍵刪除動作由主服務器控制:

  • 主服務器在刪除一個過期鍵之后,會顯式地向所有從服務器發送一個DEL命令,告知從服務器刪除這個過期鍵;
  • 從服務器在執行客戶端發送的讀命令時,即使碰到過期鍵也不會將過期鍵刪除,而是繼續像處理未過期的鍵一樣來處理過期鍵;
  • 從服務器只有在接到主服務器發來的DEL命令之后,才會刪除過期鍵。

舉個例子,有一對主從服務器,它們的數據庫中都保存著同樣的三個鍵message、xxx和yyy,其中message為過期鍵,如圖所示

如果這時有客戶端向從服務器發送命令GET message,那么從服務器將發現message鍵已經過期,但從服務器并不會刪除message鍵,而是繼續將message鍵的值返回給客戶端,就好像message鍵并沒有過期一樣。

假設在此之后,有客戶端向主服務器發送命令GET message,那么主服務器將發現鍵message已經過期:主服務器會刪除message鍵,向客戶端返回空回復,并向從服務器發送DEL message命令,如圖所示:

從服務器在接收到主服務器發來的DEL message命令之后,也會從數據庫中刪除message鍵,在這之后,主從服務器都不再保存過期鍵message了,如圖所示:

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。

您可能感興趣的文章:
  • Redis 徹底禁用RDB持久化操作
  • 淺談Redis中的RDB快照
  • Redis 通過 RDB 方式進行數據備份與還原的方法
  • Redis持久化RDB和AOF區別詳解
  • Redis打開rdb文件常用方法詳解
  • Redis兩種持久化方案RDB和AOF詳解
  • 了解redis中RDB結構_動力節點Java學院整理
  • Redis RDB技術底層原理詳解

標簽:甘南 泰州 南寧 河源 畢節 拉薩 定州 伊春

巨人網絡通訊聲明:本文標題《redis學習之RDB、AOF與復制時對過期鍵的處理教程》,本文關鍵詞  redis,學,習之,RDB,AOF,與,復制,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《redis學習之RDB、AOF與復制時對過期鍵的處理教程》相關的同類信息!
  • 本頁收集關于redis學習之RDB、AOF與復制時對過期鍵的處理教程的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久中文字幕电影| 日本精品视频一区二区| 欧美久久高跟鞋激| 国产91丝袜在线18| 亚洲图片欧美综合| 国产嫩草影院久久久久| 日本精品一级二级| 波多野结衣一区二区三区| 色婷婷综合久久久久中文 | 成人免费在线视频观看| 日韩欧美一区二区免费| 五月激情六月综合| 亚洲裸体在线观看| 国产亚洲精品免费| 日韩三级免费观看| 欧美一区二区三区色| 国产成人免费高清| 精久久久久久久久久久| 日本sm残虐另类| 性久久久久久久久| 国产精品久久久久久久浪潮网站| 欧美一区日韩一区| 久久中文娱乐网| 中文字幕一区在线观看视频| 久久久91精品国产一区二区精品| 欧美精品丝袜中出| 日韩午夜电影av| 在线免费观看日本欧美| 国产女人18水真多18精品一级做| 久久久亚洲午夜电影| 精品国产乱子伦一区| 久久婷婷国产综合精品青草 | 久久久久国产精品麻豆ai换脸| 欧美日韩性生活| 日韩一区二区三区四区五区六区| 3d成人h动漫网站入口| 欧美本精品男人aⅴ天堂| 精品国产成人系列| 亚洲精品欧美专区| 狠狠色狠狠色综合日日91app| 亚洲欧美视频在线观看视频| 蜜桃视频在线一区| 日韩一区二区三区在线| 色婷婷av一区二区三区软件| 欧美日韩在线精品一区二区三区激情| 欧美日韩国产美| 欧美日韩国产一区| 中文字幕乱码日本亚洲一区二区| 亚洲综合在线视频| 国产在线麻豆精品观看| 欧美性一级生活| 国产精品久久久久影院老司| 中文av一区二区| 日本人妖一区二区| 丁香啪啪综合成人亚洲小说| 欧美日韩国产一二三| 在线不卡一区二区| 欧美一区在线视频| 亚洲成av人片在线观看无码| 99麻豆久久久国产精品免费优播| 色综合天天性综合| 亚洲欧洲成人精品av97| 看电视剧不卡顿的网站| 精品欧美久久久| 韩国在线一区二区| 久久先锋影音av| 成人av先锋影音| 国产片一区二区| 久久国内精品视频| 欧美伦理电影网| 美女网站色91| 亚洲精品在线观看视频| 亚洲一区电影777| 欧美日韩精品一二三区| 美日韩一区二区| 久久免费精品国产久精品久久久久| 麻豆91精品视频| 亚洲一区在线视频| 久久综合久久鬼色| 91丝袜高跟美女视频| 亚洲妇熟xx妇色黄| 91免费小视频| 国产精品伊人色| 亚洲成人资源网| 欧美日韩亚洲不卡| 99久久精品久久久久久清纯| 亚洲韩国一区二区三区| 欧美激情一区在线| 538prom精品视频线放| 波多野结衣精品在线| 精品亚洲成a人在线观看| 亚洲欧美激情一区二区| 国产午夜精品一区二区三区视频 | 成人免费福利片| 日本亚洲视频在线| 欧美精品一区二区精品网| 欧洲精品中文字幕| 91在线观看地址| 欧美亚日韩国产aⅴ精品中极品| 国产成人小视频| 国产999精品久久| 成人听书哪个软件好| 国产精品自产自拍| 国产精品一区久久久久| 国产自产视频一区二区三区| 蜜桃视频在线观看一区| 久久精品国产亚洲高清剧情介绍| 综合在线观看色| 亚洲精品国产成人久久av盗摄 | 2023国产精品视频| 亚洲精品一区二区三区影院| 在线成人小视频| 日韩免费视频一区二区| 欧美成人在线直播| 亚洲欧美在线aaa| 五月天亚洲婷婷| 国产成都精品91一区二区三| 99国产精品久| 欧美一级高清大全免费观看| 久久综合视频网| 亚洲激情五月婷婷| 久久99这里只有精品| 国产精品一区二区三区99| 成人黄色电影在线 | 裸体一区二区三区| 不卡的av电影| 91在线精品一区二区三区| 亚洲一区av在线| 亚洲一区在线电影| 懂色av一区二区在线播放| 91污片在线观看| 精品欧美乱码久久久久久1区2区| 国产精品色眯眯| 韩国中文字幕2020精品| 欧美精品18+| 久久久五月婷婷| 蜜桃久久久久久久| 7777精品伊人久久久大香线蕉经典版下载 | 日本伊人色综合网| 欧美性感一区二区三区| 亚洲欧洲美洲综合色网| 国模套图日韩精品一区二区| 欧美一区二区黄色| 成人av影院在线| 水蜜桃久久夜色精品一区的特点| 日韩欧美国产一区二区三区| 国产成人午夜精品影院观看视频 | 亚洲欧美色图小说| 欧美精品 国产精品| 高清日韩电视剧大全免费| 亚洲一区中文在线| 久久久www成人免费毛片麻豆| 色老汉一区二区三区| 国产精品一色哟哟哟| 天天色天天操综合| 国产婷婷色一区二区三区四区| 91精品一区二区三区在线观看| 日韩一区二区三区四区 | 麻豆国产精品官网| 亚洲人成7777| 久久精品人人爽人人爽| 91精品婷婷国产综合久久| www.亚洲色图| 成人免费观看av| 国产福利精品一区| 国产综合成人久久大片91| 久久99国产精品久久99| 激情图片小说一区| 国产精品亚洲第一| 成人国产一区二区三区精品| 成人av网址在线| 色婷婷精品久久二区二区蜜臀av | 久久天天做天天爱综合色| 欧美高清视频在线高清观看mv色露露十八| 99久久er热在这里只有精品15| 成人午夜在线视频| 欧美自拍丝袜亚洲| 精品久久久久一区| 国产精品高潮呻吟| 亚洲一区在线观看免费观看电影高清| 国产精品国产自产拍高清av王其| 中文字幕不卡三区| 亚洲网友自拍偷拍| 国产盗摄女厕一区二区三区| 色婷婷av一区二区三区大白胸| 5858s免费视频成人| 中文文精品字幕一区二区| 一级中文字幕一区二区| 国产河南妇女毛片精品久久久| 91在线免费播放| 久久婷婷一区二区三区| 夜夜精品视频一区二区| 裸体歌舞表演一区二区| 欧美视频三区在线播放| 国产日韩v精品一区二区| 日本视频免费一区| 欧美视频一区二区三区| 日本一区二区三区视频视频| 日韩精品乱码免费| 欧美三日本三级三级在线播放|