表 2-2 列出了 SDS 的主要操作 API 。
* * *
表 2-2 SDS 的主要操作 API
| 函數 | 作用 | 時間復雜度 |
| --- | --- | --- |
| `sdsnew` | 創建一個包含給定 C 字符串的 SDS 。 | ?,?`N`?為給定 C 字符串的長度。 |
| `sdsempty` | 創建一個不包含任何內容的空 SDS 。 |  |
| `sdsfree` | 釋放給定的 SDS 。 |  |
| `sdslen` | 返回 SDS 的已使用空間字節數。 | 這個值可以通過讀取 SDS 的?`len`?屬性來直接獲得, 復雜度為??。 |
| `sdsavail` | 返回 SDS 的未使用空間字節數。 | 這個值可以通過讀取 SDS 的?`free`?屬性來直接獲得, 復雜度為??。 |
| `sdsdup` | 創建一個給定 SDS 的副本(copy)。 | ?,?`N`?為給定 SDS 的長度。 |
| `sdsclear` | 清空 SDS 保存的字符串內容。 | 因為惰性空間釋放策略,復雜度為??。 |
| `sdscat` | 將給定 C 字符串拼接到 SDS 字符串的末尾。 | ?,?`N`?為被拼接 C 字符串的長度。 |
| `sdscatsds` | 將給定 SDS 字符串拼接到另一個 SDS 字符串的末尾。 | ?,?`N`?為被拼接 SDS 字符串的長度。 |
| `sdscpy` | 將給定的 C 字符串復制到 SDS 里面, 覆蓋 SDS 原有的字符串。 | ?,?`N`?為被復制 C 字符串的長度。 |
| `sdsgrowzero` | 用空字符將 SDS 擴展至給定長度。 | ?,?`N`?為擴展新增的字節數。 |
| `sdsrange` | 保留 SDS 給定區間內的數據, 不在區間內的數據會被覆蓋或清除。 | ?,?`N`?為被保留數據的字節數。 |
| `sdstrim` | 接受一個 SDS 和一個 C 字符串作為參數, 從 SDS 左右兩端分別移除所有在 C 字符串中出現過的字符。 | ?,?`M`?為 SDS 的長度,?`N`?為給定 C 字符串的長度。 |
| `sdscmp` | 對比兩個 SDS 字符串是否相同。 | ?,?`N`?為兩個 SDS 中較短的那個 SDS 的長度。 |
- 介紹
- 前言
- 致謝
- 簡介
- 第一部分:數據結構與對象
- 簡單動態字符串
- SDS 的定義
- SDS 與 C 字符串的區別
- SDS API
- 重點回顧
- 參考資料
- 鏈表
- 鏈表和鏈表節點的實現
- 鏈表和鏈表節點的 API
- 重點回顧
- 字典
- 字典的實現
- 哈希算法
- 解決鍵沖突
- rehash
- 漸進式 rehash
- 字典 API
- 重點回顧
- 跳躍表
- 跳躍表的實現
- 跳躍表 API
- 重點回顧
- 整數集合
- 整數集合的實現
- 升級
- 升級的好處
- 降級
- 整數集合 API
- 重點回顧
- 壓縮列表
- 壓縮列表的構成
- 壓縮列表節點的構成
- 連鎖更新
- 壓縮列表 API
- 重點回顧
- 對象
- 對象的類型與編碼
- 字符串對象
- 列表對象
- 哈希對象
- 集合對象
- 有序集合對象
- 類型檢查與命令多態
- 內存回收
- 對象共享
- 對象的空轉時長
- 重點回顧
- 第二部分:單機數據庫的實現
- 數據庫
- 數據庫鍵空間
- 重點回顧
- RDB 持久化
- RDB 文件結構
- 重點回顧
- AOF 持久化
- AOF 持久化的實現
- 重點回顧
- 事件
- 文件事件
- 重點回顧
- 參考資料
- 客戶端
- 客戶端屬性
- 重點回顧
- 服務器
- 命令請求的執行過程
- 重點回顧
- 第三部分:多機數據庫的實現
- 復制
- 舊版復制功能的實現
- 重點回顧
- Sentinel
- 啟動并初始化 Sentinel
- 重點回顧
- 參考資料
- 集群
- 節點
- 重點回顧
- 第四部分:獨立功能的實現
- 發布與訂閱
- 頻道的訂閱與退訂
- 重點回顧
- 參考資料
- 事務
- 事務的實現
- 重點回顧
- Lua 腳本
- 創建并修改 Lua 環境
- 重點回顧
- 排序
- SORT <key> 命令的實現
- 重點回顧
- 二進制位數組
- GETBIT 命令的實現
- 重點回顧
- 慢查詢日志
- 慢查詢記錄的保存
- 慢查詢日志的閱覽和刪除
- 添加新日志
- 重點回顧
- 監視器
- 成為監視器
- 向監視器發送命令信息
- 重點回顧
- 源碼、相關資源和勘誤