本文內容均來自《redis設計與實現》一書
列表物件的編碼可以是ziplist或者linkedlist。ziplist編碼的列表物件使用壓縮列表作為底層實現,每個壓縮列表節點儲存乙個列表元素。
linkedlist編碼的列表物件使用雙端鍊錶作為底層實現,每個雙端鍊錶節點都儲存了乙個字串物件,而每個字串物件都儲存了乙個列表元素。(stringobject為字串物件的簡化表示)
注意:linkedlist的編碼的列表物件在底層的雙端鍊錶結構中包含了多個字串物件,這種巢狀字串物件的行為在雜湊物件、集合物件和有序集合物件中都會出現,字串物件是redis五種型別中唯一一種會被其他四種物件巢狀的物件。當列表物件可以同時滿足以下兩個條件時,列表物件使用ziplist編碼:
否則,列表物件使用linkedlist編碼。
注意:以上兩個條件的上限值是可以修改的,對應的配置選項為list-max-ziplist-value和list-max-ziplist-entries。redis在3.2版本之後新增了一種新的redis底層資料結構:quicklist(快速列表),用於列表物件的具體實現。
09 Redis持久化 AOF方式
aof簡述 redis每次接受到一條改變資料的命令時,它會把該命令寫到乙個aof檔案中 只記錄寫操作,不記錄讀操作 當redis啟動時,它通過執行aof檔案中的所有命令來恢復資料。aof 當使用redis儲存非臨時資料時,一般需要開啟aof持久化來降低程序終止導致的資料丟失。aof可以將redis執...
09 Redis 訊息訂閱與發布
redis 發布訂閱 pub sub 是一種訊息通訊模式 傳送者 pub 傳送訊息,訂閱者 sub 接收訊息。redis 客戶端可以訂閱任意數量的頻道。下圖展示了頻道 channel1 以及訂閱這個頻道的三個客戶端 client2 client5 和 client1 之間的關係 當有新訊息通過 pu...
Redis 列表物件
列表物件的編碼可以是ziplist或者linkedlist。ziplist編碼的列表物件使用壓縮列表作為底層實現,每個壓縮列表節點 entry 儲存了乙個列表元素。舉個例子,如果我們執行以下 rpush 命令,那麼伺服器將建立乙個列表物件作為numbers鍵的值 redis rpush number...