* Redis 服務器的所有數據庫都保存在?`redisServer.db`?數組中, 而數據庫的數量則由?`redisServer.dbnum`?屬性保存。
* 客戶端通過修改目標數據庫指針, 讓它指向?`redisServer.db`?數組中的不同元素來切換不同的數據庫。
* 數據庫主要由?`dict`?和?`expires`?兩個字典構成, 其中?`dict`?字典負責保存鍵值對, 而?`expires`?字典則負責保存鍵的過期時間。
* 因為數據庫由字典構成, 所以對數據庫的操作都是建立在字典操作之上的。
* 數據庫的鍵總是一個字符串對象, 而值則可以是任意一種 Redis 對象類型, 包括字符串對象、哈希表對象、集合對象、列表對象和有序集合對象, 分別對應字符串鍵、哈希表鍵、集合鍵、列表鍵和有序集合鍵。
* `expires`?字典的鍵指向數據庫中的某個鍵, 而值則記錄了數據庫鍵的過期時間, 過期時間是一個以毫秒為單位的 UNIX 時間戳。
* Redis 使用惰性刪除和定期刪除兩種策略來刪除過期的鍵: 惰性刪除策略只在碰到過期鍵時才進行刪除操作, 定期刪除策略則每隔一段時間, 主動查找并刪除過期鍵。
* 執行?SAVE?命令或者?BGSAVE?命令所產生的新 RDB 文件不會包含已經過期的鍵。
* 執行?BGREWRITEAOF?命令所產生的重寫 AOF 文件不會包含已經過期的鍵。
* 當一個過期鍵被刪除之后, 服務器會追加一條?DEL?命令到現有 AOF 文件的末尾, 顯式地刪除過期鍵。
* 當主服務器刪除一個過期鍵之后, 它會向所有從服務器發送一條?DEL?命令, 顯式地刪除過期鍵。
* 從服務器即使發現過期鍵, 也不會自作主張地刪除它, 而是等待主節點發來?DEL?命令, 這種統一、中心化的過期鍵刪除策略可以保證主從服務器數據的一致性。
* 當 Redis 命令對數據庫進行修改之后, 服務器會根據配置, 向客戶端發送數據庫通知。
- 介紹
- 前言
- 致謝
- 簡介
- 第一部分:數據結構與對象
- 簡單動態字符串
- SDS 的定義
- SDS 與 C 字符串的區別
- SDS API
- 重點回顧
- 參考資料
- 鏈表
- 鏈表和鏈表節點的實現
- 鏈表和鏈表節點的 API
- 重點回顧
- 字典
- 字典的實現
- 哈希算法
- 解決鍵沖突
- rehash
- 漸進式 rehash
- 字典 API
- 重點回顧
- 跳躍表
- 跳躍表的實現
- 跳躍表 API
- 重點回顧
- 整數集合
- 整數集合的實現
- 升級
- 升級的好處
- 降級
- 整數集合 API
- 重點回顧
- 壓縮列表
- 壓縮列表的構成
- 壓縮列表節點的構成
- 連鎖更新
- 壓縮列表 API
- 重點回顧
- 對象
- 對象的類型與編碼
- 字符串對象
- 列表對象
- 哈希對象
- 集合對象
- 有序集合對象
- 類型檢查與命令多態
- 內存回收
- 對象共享
- 對象的空轉時長
- 重點回顧
- 第二部分:單機數據庫的實現
- 數據庫
- 數據庫鍵空間
- 重點回顧
- RDB 持久化
- RDB 文件結構
- 重點回顧
- AOF 持久化
- AOF 持久化的實現
- 重點回顧
- 事件
- 文件事件
- 重點回顧
- 參考資料
- 客戶端
- 客戶端屬性
- 重點回顧
- 服務器
- 命令請求的執行過程
- 重點回顧
- 第三部分:多機數據庫的實現
- 復制
- 舊版復制功能的實現
- 重點回顧
- Sentinel
- 啟動并初始化 Sentinel
- 重點回顧
- 參考資料
- 集群
- 節點
- 重點回顧
- 第四部分:獨立功能的實現
- 發布與訂閱
- 頻道的訂閱與退訂
- 重點回顧
- 參考資料
- 事務
- 事務的實現
- 重點回顧
- Lua 腳本
- 創建并修改 Lua 環境
- 重點回顧
- 排序
- SORT <key> 命令的實現
- 重點回顧
- 二進制位數組
- GETBIT 命令的實現
- 重點回顧
- 慢查詢日志
- 慢查詢記錄的保存
- 慢查詢日志的閱覽和刪除
- 添加新日志
- 重點回顧
- 監視器
- 成為監視器
- 向監視器發送命令信息
- 重點回顧
- 源碼、相關資源和勘誤