1. 程式人生 > 實用技巧 >redis-資料庫

redis-資料庫

  • edis 伺服器的所有資料庫都儲存在redisServer.db陣列中, 而資料庫的數量則由redisServer.dbnum屬性儲存。
  • 客戶端通過修改目標資料庫指標, 讓它指向redisServer.db陣列中的不同元素來切換不同的資料庫。
  • 資料庫主要由dictexpires兩個字典構成, 其中dict字典負責儲存鍵值對, 而expires字典則負責儲存鍵的過期時間。
  • 因為資料庫由字典構成, 所以對資料庫的操作都是建立在字典操作之上的。
  • 資料庫的鍵總是一個字串物件, 而值則可以是任意一種 Redis 物件型別, 包括字串物件、雜湊表物件、集合物件、列表物件和有序集合物件, 分別對應字串鍵、雜湊表鍵、集合鍵、列表鍵和有序集合鍵。
  • expires字典的鍵指向資料庫中的某個鍵, 而值則記錄了資料庫鍵的過期時間, 過期時間是一個以毫秒為單位的 UNIX 時間戳。
  • Redis 使用惰性刪除和定期刪除兩種策略來刪除過期的鍵: 惰性刪除策略只在碰到過期鍵時才進行刪除操作, 定期刪除策略則每隔一段時間, 主動查詢並刪除過期鍵。
  • 執行SAVE命令或者BGSAVE命令所產生的新 RDB 檔案不會包含已經過期的鍵。
  • 執行BGREWRITEAOF命令所產生的重寫 AOF 檔案不會包含已經過期的鍵。
  • 當一個過期鍵被刪除之後, 伺服器會追加一條DEL命令到現有 AOF 檔案的末尾, 顯式地刪除過期鍵。
  • 當主伺服器刪除一個過期鍵之後, 它會向所有從伺服器傳送一條DEL命令, 顯式地刪除過期鍵。
  • 從伺服器即使發現過期鍵, 也不會自作主張地刪除它, 而是等待主節點發來DEL命令, 這種統一、中心化的過期鍵刪除策略可以保證主從伺服器資料的一致性。
  • 當 Redis 命令對資料庫進行修改之後, 伺服器會根據配置, 向客戶端傳送資料庫通知。