(Redis教程)簡單動態字符串 SDS

簡單動態字符串 SDS

在這裏插入圖片描述
在這裏插入圖片描述
除了用來保存數據庫中的字符串值之外,SDS還被用作緩衝區。

  • AOF緩衝模塊中的AOF緩衝區,是由SDS實現的。
  • 客戶端狀態中的輸入緩衝區,是由SDS實現的。

SDS的定義

每個sds.h/sdshdr結構表示一個SDS值:
在這裏插入圖片描述
在這裏插入圖片描述

  • free屬性的值爲0,表示這個SDS沒有分配任何未使用空間。
  • len屬性的值爲5,表示這個SDS保存了一個五字節長的字符串。
  • buf屬性是一個char類型的數組
    在這裏插入圖片描述
    在這裏插入圖片描述

SDS與C字符串的區別

在這裏插入圖片描述

  1. 常數複雜度獲取字符串長度
  • 對於C字符串,因爲不記錄自身的長度信息,必須遍歷整個字符串
  • 對於SDS,因爲SDS在len屬性中記錄SDS本身的長度,所以獲取長度的複雜度爲O(1)
  1. 杜絕緩衝區溢出

  2. 減少修改字符串時帶來的內存重分配次數

  3. 二進制安全

  4. 兼容部分C字符串函數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章