redis 初體驗之 字符串保存

sds 是redis 中保存字符串的一種方式,他採用一個結構體,來代替C語言中簡單的 char *,這種結構,可以保存長度,擴展時,也不用頻繁申請新的內存空間

其結構體為:

<code>struct sdshdr {
// buf 已佔用長度
int len;
// buf 剩餘可用長度
int free;
// 實際保存字符串數據的地方
char buf[];
};/<code>

擴展時長度增加的策略

  1. buf < 1M ,則每次翻倍;
  2. buf > 1M,每次增加1M

優點:

  1. O(1) 時間內就可以獲取到字符串長度
  2. 增加長度時,不需要頻率申請內存

缺點:

  1. 需要多維護一個結構體
  2. 有空間浪費


分享到:


相關文章: