* 服務器狀態結構使用?`clients`?鏈表連接起多個客戶端狀態, 新添加的客戶端狀態會被放到鏈表的末尾。
* 客戶端狀態的?`flags`?屬性使用不同標志來表示客戶端的角色, 以及客戶端當前所處的狀態。
* 輸入緩沖區記錄了客戶端發送的命令請求, 這個緩沖區的大小不能超過 1 GB 。
* 命令的參數和參數個數會被記錄在客戶端狀態的?`argv`?和?`argc`?屬性里面, 而?`cmd`?屬性則記錄了客戶端要執行命令的實現函數。
* 客戶端有固定大小緩沖區和可變大小緩沖區兩種緩沖區可用, 其中固定大小緩沖區的最大大小為 16 KB , 而可變大小緩沖區的最大大小不能超過服務器設置的硬性限制值。
* 輸出緩沖區限制值有兩種, 如果輸出緩沖區的大小超過了服務器設置的硬性限制, 那么客戶端會被立即關閉; 除此之外, 如果客戶端在一定時間內, 一直超過服務器設置的軟性限制, 那么客戶端也會被關閉。
* 當一個客戶端通過網絡連接連上服務器時, 服務器會為這個客戶端創建相應的客戶端狀態。 網絡連接關閉、 發送了不合協議格式的命令請求、 成為?CLIENT_KILL?命令的目標、 空轉時間超時、 輸出緩沖區的大小超出限制, 以上這些原因都會造成客戶端被關閉。
* 處理 Lua 腳本的偽客戶端在服務器初始化時創建, 這個客戶端會一直存在, 直到服務器關閉。
* 載入 AOF 文件時使用的偽客戶端在載入工作開始時動態創建, 載入工作完畢之后關閉。
- 介紹
- 前言
- 致謝
- 簡介
- 第一部分:數據結構與對象
- 簡單動態字符串
- SDS 的定義
- SDS 與 C 字符串的區別
- SDS API
- 重點回顧
- 參考資料
- 鏈表
- 鏈表和鏈表節點的實現
- 鏈表和鏈表節點的 API
- 重點回顧
- 字典
- 字典的實現
- 哈希算法
- 解決鍵沖突
- rehash
- 漸進式 rehash
- 字典 API
- 重點回顧
- 跳躍表
- 跳躍表的實現
- 跳躍表 API
- 重點回顧
- 整數集合
- 整數集合的實現
- 升級
- 升級的好處
- 降級
- 整數集合 API
- 重點回顧
- 壓縮列表
- 壓縮列表的構成
- 壓縮列表節點的構成
- 連鎖更新
- 壓縮列表 API
- 重點回顧
- 對象
- 對象的類型與編碼
- 字符串對象
- 列表對象
- 哈希對象
- 集合對象
- 有序集合對象
- 類型檢查與命令多態
- 內存回收
- 對象共享
- 對象的空轉時長
- 重點回顧
- 第二部分:單機數據庫的實現
- 數據庫
- 數據庫鍵空間
- 重點回顧
- RDB 持久化
- RDB 文件結構
- 重點回顧
- AOF 持久化
- AOF 持久化的實現
- 重點回顧
- 事件
- 文件事件
- 重點回顧
- 參考資料
- 客戶端
- 客戶端屬性
- 重點回顧
- 服務器
- 命令請求的執行過程
- 重點回顧
- 第三部分:多機數據庫的實現
- 復制
- 舊版復制功能的實現
- 重點回顧
- Sentinel
- 啟動并初始化 Sentinel
- 重點回顧
- 參考資料
- 集群
- 節點
- 重點回顧
- 第四部分:獨立功能的實現
- 發布與訂閱
- 頻道的訂閱與退訂
- 重點回顧
- 參考資料
- 事務
- 事務的實現
- 重點回顧
- Lua 腳本
- 創建并修改 Lua 環境
- 重點回顧
- 排序
- SORT <key> 命令的實現
- 重點回顧
- 二進制位數組
- GETBIT 命令的實現
- 重點回顧
- 慢查詢日志
- 慢查詢記錄的保存
- 慢查詢日志的閱覽和刪除
- 添加新日志
- 重點回顧
- 監視器
- 成為監視器
- 向監視器發送命令信息
- 重點回顧
- 源碼、相關資源和勘誤