sds 是redis 中保存字符串的一種方式,他採用一個結構體,來代替C語言中簡單的 char *,這種結構,可以保存長度,擴展時,也不用頻繁申請新的內存空間
其結構體為:
<code>struct sdshdr { // buf 已佔用長度 int len; // buf 剩餘可用長度 int free; // 實際保存字符串數據的地方 char buf[]; };/<code>
擴展時長度增加的策略
- buf < 1M ,則每次翻倍;
- buf > 1M,每次增加1M
優點:
- O(1) 時間內就可以獲取到字符串長度
- 增加長度時,不需要頻率申請內存
缺點:
- 需要多維護一個結構體
- 有空間浪費