《Redis 雜湊物件》

2022-05-02 08:42:09 字數 1341 閱讀 6042

一:概述

-redis 原始碼版本為3.0.0.

- redis 雜湊命令請戳。

-object encoding key 檢視資料底層型別實現。

二:總結

- 使用 hash 時

-控制資料大小,盡量不要寫入 不要超過 hash-max-ziplist-value配置的位元組。

-控制雜湊內的個數,盡量不要寫入 不要超過  hash-max-ziplist-entries配置的個數。

- 否則會引起底層資料結構的變化導致記憶體耗費的增加,同時資料過大和個數過多,都會導致雜湊效能降低

二:雜湊物件的底層實現

- 編碼方式

- 字串物件共有三種編碼方式ziplist(壓縮列表) / hashtable(字典底層實現)

- 編碼方式的選擇

- 當雜湊物件元素都 小於64位元組(hash-max-ziplist-value) / 元素數量小於512個(hash-max-ziplist-entries) 則使用 ziplist 。

- 不滿足條件則使用 hashtable.

-ziplist編碼方式

- 為了節約記憶體而開發,由一系列的特殊編碼連續記憶體塊組成的順序型資料結構

- 儲存流程

- 每當新的雜湊節點加入,會將 雜湊鍵/雜湊值 推入壓縮列表的隊尾。(類佇列)

- 圖示

- hashtable 編碼方式

- hastable 使用字典作為底層實現,雜湊中的每乙個鍵值都是用乙個字典鍵值來儲存。

- 圖示

四:編碼轉換

- 當ziplist 大於64/長度大於512 則會進行編碼的轉換 ziplist -> hashtable.

五:字串命令的實現

-

Redis 物件 雜湊物件

每種型別的變數至少使用了兩種不同的編碼 1 五種物件的底層編碼 字串型別物件 redis encoding int redis encoding embstr redis encoding raw 列表型別的物件 redis encoding ziplist redis encoding linke...

Redis 雜湊物件

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

Redis 雜湊物件和集合物件

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