Redis之簡單動態字串(SDS)

2021-10-07 11:54:35 字數 453 閱讀 3677

redis沒有直接使用c語言傳統的字串表示,而是自己構建一種名為簡單動態字串(sds)的抽象型別,並將sds用作redis的預設字串表示。

在redis的資料庫中,包含字串值得鍵值對在底層都是又sds實現的。

比如reids> set msg 「hello world」

ok在客戶端中執行這樣的命令,redis將在資料庫中建立乙個新的鍵值對,其中:

鍵值對的鍵是乙個字串物件,物件的底層實現是乙個儲存著字串「msg」的sds。

鍵值對的值也是乙個字串物件,物件的底層實現是乙個儲存著字串「hello world」的sds。

sds具有以下優點:

(1)常數複雜度獲取字串長度

(2)杜絕緩衝區溢位

(3)減少修改字串長度時所需的記憶體重分配次數(空間預分配,惰性空間釋放)

(4)二進位制安全

(5)相容部分c字串函式

Redis之簡單動態字串

sds的介紹 redis中字串並沒有使用c語言傳統的字串,而是構建了一種名為簡單動態字串 sds sds是redis的預設字串標識。redis裡面的c語言字串用在一些無需對字串值進行修改的地方,例如列印日誌redislog redis warning,redis is now ready to ex...

Redis深入之簡單動態字串

一 redis鍵值對 redis資料庫裡面的每個鍵值對 key value 都是由物件組成的,鍵是乙個字串物件,值是字串物件,列表物件,雜湊物件,集合物件,有序集合物件中的五種之一。redis沒有直接使用c語言傳統的字串表示,而是自己構建了乙個名為簡單動態字串sds的抽象型別,並將sds用作redi...

Redis之簡單動態字串 SDS

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