簡單動態字串 SDS

2021-09-22 23:08:55 字數 364 閱讀 5580

1、介紹:

redis沒有使用c語言本身的字串,而使用簡單動態字串sds(****** dynamic string)這種抽象型別。

2、實現:

struct
3、為什麼要使用sds?為什麼不適用c語言本身的字串?如何擴容?

因為c語言本身的字串進行length計算的時候複雜度為o(n),sds本身具有len屬性,使用sds後計算length的複雜度為o(1)

sds的api會檢查sds的空間是否滿足修改的要求,不滿足的話會自動擴充套件到所需的要求。

空間預分配

惰性空間釋放

使用sds可以使redis不僅可以儲存文字資料,還可以儲存二進位制資料。

簡單動態字串 SDS

sds dynamic string,簡單動態字串 是 redis 底層所使用的字串表示。sds 在 redis 中的主要作用有以下兩個 實現字串物件 stringobject 在 redis 程式內部用作char 型別的替代品 redis 是乙個鍵值對資料庫 key value db 資料庫的值可...

Redis之簡單動態字串 SDS

簡單動態字串sds dynamic string sds資料結構如下 struct sdshdr基於sds資料結構的定義和一些api規則,sds相比於c字串有如下優勢 1.獲取字串長度的複雜度為o 1 c字串的複雜度為o n 2.杜絕緩衝區溢位 3.減少修改字串時帶來的記憶體重分配次數 4.二進位制...

Redis之簡單動態字串(SDS)

redis沒有直接使用c語言傳統的字串表示,而是自己構建一種名為簡單動態字串 sds 的抽象型別,並將sds用作redis的預設字串表示。在redis的資料庫中,包含字串值得鍵值對在底層都是又sds實現的。比如reids set msg hello world ok在客戶端中執行這樣的命令,redi...