edis數(shù)據(jù)庫

  1. 默認(rèn)16個數(shù)據(jù)庫,每個數(shù)據(jù)庫由一個redis.h/redisDb結(jié)構(gòu)表示,此結(jié)構(gòu)里的dict字典與expires字典,其中dict保存了該庫所有鍵值對,此字典即為鍵空間;expires字典保存了數(shù)據(jù)庫中所有鍵的過期時間,該字典的鍵為指向鍵空間中的某鍵對象,值為long long 類型的整數(shù)表示的過期unix時間戳。

  2. 對鍵空間進(jìn)行操作時還有額外的一些操作:

    • 更新命中或不命中次數(shù);

    • 更新LRU(最后一次使用)時間;

    • 判斷鍵是否過期,若過期則先刪除此鍵然后在執(zhí)行其他操作;

    • 如果有watch命令監(jiān)視此鍵,則將此鍵標(biāo)識為dirty讓應(yīng)用程序注意到;

    • 修改鍵對dirty計數(shù)器+1以觸發(fā)持久化及復(fù)制操作;

    • 發(fā)送可能的數(shù)據(jù)庫通知

  3. redis使用惰性刪除與定期刪除配合策略

    • 惰性刪除:只在取鍵是判斷是否刪除,對CPU友好對內(nèi)存不友好;

    • 定期刪除:每隔一定時間執(zhí)行一次,且限制執(zhí)行的時長和頻率,多次遍歷各庫,隨機檢查過期時間并刪除

  4. RDB持久化模式對過期的鍵處理:

    • 生成rdb文件時已過期的鍵不會保存到文件里;

    • 載入時如果當(dāng)前服務(wù)器已主服務(wù)器模式運行,則忽略過期鍵,如果從服務(wù)器模式則不論過期都載入然后等待與主服務(wù)器同步到已過期的鍵。

  5. AOF持久化模式對過期鍵的處理:

    • 網(wǎng)友評論