redis五種資料結構string(字串) 、 hash(雜湊) 、 list(列表) 、 set(集合) 、 zset(有序集合),每種資料結構都有自己底層的內部編碼實現, 而且是多種實現。如下兩張圖,左側為redis的五種編碼,右側為各種編碼的內部編碼方式。
使用object encoding + key的的方式便可以知道鍵值對的編碼方式,例如:
127.0.0.1:6379> set mykey 8653
ok127.0.0.1:6379> object encoding mykey
"int"
字串型別的內部編碼有3種:
編碼說明
int8個位元組的長整型
embstr
小於等於39個位元組的字串(在3.2版本之後,則變成了44位元組為分界,
raw大於39個位元組的字串
三者的具體區別見:
雜湊型別的內部編碼有兩種:
·ziplist(壓縮列表) : 當雜湊型別元素個數小於hash-max-ziplist-entries配置(預設512個) 、 同時所有值都小於hash-max-ziplist-value配置(預設64位元組) 時, redis會使用ziplist作為雜湊的內部實現, ziplist使用更加緊湊的結構實現多個元素的連續儲存, 所以在節省記憶體方面比hashtable更加優秀。
·hashtable(雜湊表) : 當雜湊型別無法滿足ziplist的條件時, redis會使用hashtable作為雜湊的內部實現, 因為此時ziplist的讀寫效率會下降, 而hashtable的讀寫時間複雜度為o(1) 。
redis資料結構及編碼方式
edis有5種常用的資料結構 string hash list set zset,通過type key 命令可以檢視當前鍵的資料結構型別 每種資料結構都有不止一種相應的內部編碼實現,redis會在合適的場景選擇合適的內部編碼,通過object encoding key 可以檢視內部編碼。這樣設計的好...
redis各資料結構編碼
資料結構 特點編碼 string 字串 redis 最基本的型別,string 型別是二進位制安全的 redis encoding int 如果乙個字串物件儲存的是整數值,並且這個整數值可以用long型別來表示 redis encoding embstr 如果字串物件儲存的是乙個字串值,並且這個字串...
redis 的資料結構和內部編碼
首先,從網上找來一張鎮樓 redis對外展現五種資料型別,string 字串 hash 雜湊 list 列表 set 集合 zset 有序集合 每種資料結構,redis都提供了不同的內部編碼實現方式 內部編碼可以通過 object encoding key 檢視 以便使用不同的場景 1 string...