簡單動態字符串 SDS
除了用來保存數據庫中的字符串值之外,SDS還被用作緩衝區。
- AOF緩衝模塊中的AOF緩衝區,是由SDS實現的。
- 客戶端狀態中的輸入緩衝區,是由SDS實現的。
SDS的定義
每個sds.h/sdshdr結構表示一個SDS值:
- free屬性的值爲0,表示這個SDS沒有分配任何未使用空間。
- len屬性的值爲5,表示這個SDS保存了一個五字節長的字符串。
- buf屬性是一個char類型的數組
SDS與C字符串的區別
- 常數複雜度獲取字符串長度
- 對於C字符串,因爲不記錄自身的長度信息,必須遍歷整個字符串
- 對於SDS,因爲SDS在len屬性中記錄SDS本身的長度,所以獲取長度的複雜度爲O(1)
-
杜絕緩衝區溢出
-
減少修改字符串時帶來的內存重分配次數
-
二進制安全
-
兼容部分C字符串函數