Redis 設計與實現閱讀筆記(一)

2021-06-27 06:39:05 字數 545 閱讀 5069

一、簡單動態字串(sds)

sds通過使用乙個結構如下:

struct sdshdr ;

len是字串長度,free是快取區中的剩餘大小,通過使用len記錄字串的長度,可以快速的實現字串的長度獲取,並且可以避免複製相關的操作的溢位。利用free實現對字串儲存空間的預分配和惰性釋放,來實現高效的字串的相關操作,避免了可能產生的過於頻繁的記憶體申請和釋放操作。為了相容一部分字元操作的函式,ssd的結尾仍然以\0結束。

二、鍊錶

redis中以listnode結構實現實現雙向無環鏈表,使用void* 型別儲存節點值,從而實現鍊錶儲存值的多型特性,可以單個鍊錶中儲存多個型別的值。

三、字典

redis 的字典使用雜湊表作為低層實現,每個雜湊表裡面有多個節點,每個節點儲存乙個鍵值對。鍵用void* 型別的key,而值部分使用union型別,可以是乙個void *指標,或者是64的有(無)符號數。

對於實現資料庫低層和雜湊鍵低層時,使用murmurhash2演算法計算hash值,使用鏈位址法解決衝突,並使用rehash的方式,完成hash表的擴充套件或收縮。

《redis設計與實現》第一版 閱讀筆記(未看完)

一 文件介紹 本文僅作為本人讀書筆記使用,不對其中內容做解釋,記錄以本人可以看懂為標準 該書以簡明的方式主要介紹了redis內部的執行機制,從資料結構到伺服器構造,值得推薦 第一部分 內部資料結構 redis記憶體所使用的資料結構與演算法 一 sds dynamic string 簡單動態字串 1....

Redis設計與實現(一)

redis是一種現在挺火的一種nosql資料庫,它一般被用作快取。比如我們可以在redis客戶端敲 redis set msg helloredis 那麼就會在redis資料庫中建立乙個新的鍵值對,keg是msg,value是helloredis,兩個都是sds。又比如在redis客戶端敲 redi...

《redis設計與實現》讀書筆記(一)

定時刪除 惰性刪除 定期刪除 描述一過期立馬刪除 下次獲取時再刪除 每隔一段時間批量刪除 優點對記憶體友好 對cpu時間友好 缺點 對cpu時間不友好 對記憶體不友好 aof持久化是通過儲存redis伺服器所執行的寫命令來記錄資料庫狀態。aof持久化的實現 命令追加 寫命令以協議的格式追加到aof ...