Redis學習筆記之Redis的物件

2022-05-27 14:48:07 字數 1150 閱讀 5515

型別與編碼:

typedef struct redisobject robj;

1.字串物件

編碼: int,整數值,而且這個整數值可以用long型別來表示

raw,字串值,而且字串值的長度大於32位元組,sds的記憶體與redisobject記憶體不連續

embstr,字串值,而且字串值的長度小於32位元組,sds的記憶體與redisobject記憶體是連續的

編碼轉換:當對字串進行操作時引起字串型別變化,那麼字串物件的編碼也會隨即改變,比如在乙個10後面加上「days ago」,那麼字串的編碼將從int變為raw

2.列表物件

編碼: ziplist,需滿足以下兩個條件1)列表物件儲存的所有字串元素的長度都小於64位元組(可修改);2)列表物件儲存的元素數量小於512個(可修改)

linkedlist,不滿足上述兩個條件的列表物件編碼都採用linkedlist

筆者實際操作之後發現,不管什麼情況,結果都如下:

127.0.0.1:6379> object encoding test

"quicklist"

quicklist:a doubly linked list of ziplists,乙個ziplist的雙向鍊錶

3.雜湊物件

編碼: ziplist,先將乙個鍵值對的鍵推到表尾,然後將這個鍵值對的值推到表尾,同樣需要滿足以下兩個條件1)雜湊物件儲存的所有鍵值對的鍵和值得字串長度都小於64(可修改)位元組2)雜湊物件儲存的鍵值對的數量小於512(可修改)

hashtable,底層採用字典實現

4.集合物件

編碼:intset,集合物件使用整數集合作為底層實現,條件1)集合物件儲存的所有元素都是整數2)集合物件儲存的元素個數不超過512個

hashtable,使用字典作為底層實現,字典的每乙個值都是乙個字串物件,每個字串物件都包含乙個集合元素,字典的值全部為null

5.有序集合物件

編碼:ziplist,使用壓縮列表作為底層實現,要求1)有序集合儲存的元素數量小於128,2)有序集合儲存的所有元素成員的長度都小於64位元組

skiplist,使用zset作為底層實現,乙個zset結構同時包含乙個字典和乙個跳躍表;同時使用字典和跳躍表是為了1)保留字典以o(1)的時間複雜度查詢成員的分值這一特性2)保留跳躍表執行範圍型操作的優點

redis學習筆記 5 之redis記憶體優化

縮減鍵值物件 命令處理 記憶體淘汰策略 如何選擇淘汰策略 內容 為六星教育,這裡僅作為學習筆記 目前大部分公司都會將 web 伺服器 資料庫伺服器等部署在 linux 作業系統上,redis優化也需要考慮作業系統,所以接下來介紹 linux 作業系統如何優化redis。檢查資料持久化策略 資料落磁碟...

redis學習筆記之hash

hash 適合儲存乙個物件,相較於將每個字段儲存為string 將乙個物件儲存為乙個hash將占用更少的記憶體 1.hset user001 name zhangsan 設定乙個user001 的hash name 為 zhangsan 2.hget user001 name 獲取 user001 ...

Redis學習筆記之List

1 list基本命令 rpush和lpush 從右 左邊插入乙個字串 lpop和rpop 從左 右邊彈出乙個字串 lindex 從給定位置區的乙個字串 lrange 從list中取得一定範圍的字串 llen 返回list的長度 2 list高階命令 ltrim 讓list只保留指定區間內的元素 li...