Redis 物件 雜湊物件

2021-09-13 13:30:22 字數 920 閱讀 8819

每種型別的變數至少使用了兩種不同的編碼

1 五種物件的底層編碼:

字串型別物件:redis_encoding_int   redis_encoding_embstr  redis_encoding_raw

列表型別的物件:redis_encoding_ziplist     redis_encoding_linkedlist

雜湊物件:redis_encoding_ziplist    redis_encoding_ht

集合物件:redis_encoding_intset     redis_encoding_ht

有序集合物件:redis_encoding_ziplist       redis_encoding_skiplist

a:ziplist編碼的雜湊物件使用壓縮列表作為底層實現,每個壓縮列表 儲存了乙個整個雜湊物件中的元素(將雜湊中多個物件儲存在乙個壓縮列表中   更節省空間),當由新的鍵值對要加入到雜湊物件時,先將儲存鍵的壓縮列表節點加入到壓縮列表表尾,再將儲存值的壓縮列表節點加入到壓縮列表表尾。

同一鍵值對的鍵值節點相鄰,且鍵在前,值在後。

先加入的鍵值對在壓縮列表表頭,後加入的在壓縮列表表尾。

b:hashtable編碼的雜湊物件  使用 字典 作為底層實現,雜湊物件中的每個鍵值對使用字典鍵值對來儲存。

每個鍵是乙個字串物件,每個值是乙個字串物件

2  編碼轉換條件

當  a:每個鍵或值的 字串元素的長度均小於64位元組,且

b:列表中元素個數小於512個

時,會用壓縮列表實現雜湊物件。否則採用字典實現雜湊物件。

api:

hset

hget

hexists

hdel

hlen

hgetall

3  命令在編碼上的作用原理

根據2進行推測 

《Redis 雜湊物件》

一 概述 redis 原始碼版本為3.0.0.redis 雜湊命令請戳。object encoding key 檢視資料底層型別實現。二 總結 使用 hash 時 控制資料大小,盡量不要寫入 不要超過 hash max ziplist value配置的位元組。控制雜湊內的個數,盡量不要寫入 不要超過...

Redis 雜湊物件

雜湊物件的編碼可以是ziplist或者hashtable。ziplist編碼的雜湊物件使用壓縮列表作為底層實現,每當有新的鍵值對要加入到雜湊物件時,程式會先將儲存了鍵的壓縮列表節點推入到壓縮列表表尾,然後再將儲存了值的壓縮列表節點推入到壓縮列表表尾,因此 舉個例子,如果我們執行以下 hset 命令,...

Redis 雜湊物件和集合物件

雜湊物件編碼實現為ziplist或hashtable ziplist ziplist作為雜湊物件底層實現時,當有新兼職加入雜湊物件,則會儲存鍵的列表節點放到表尾,再兌入值得列表節點。即儲存同一鍵值對節點總是相鄰,儲存鍵的節點在前,儲存值的節點在後。先新增到雜湊物件中的鍵值對會放在列表表尾。使用zip...