《Redis 集合物件》

2022-05-02 08:42:08 字數 1000 閱讀 6924

一:概述

-redis 原始碼版本為3.0.0.

- redis 集合命令請戳。

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

二:集合物件的底層實現

- 編碼方式

- 字串物件共有兩種編碼方式intset(整數集合)

/ hashtable(字典)

- 編碼方式的選擇

-  當列表物件 元素都是整數/元素數量小於512 則使用 intset(set-max-intset-entries) 。

- 不滿足條件則使用hashtable.

-inset編碼方式

- intset 編碼 使用 intset(陣列) 作為底層實現。(以此來保證集合內唯一的元素)

- 圖示

- hashtable 編碼方式

- 使用字典實現,字典的每個鍵都是乙個字串物件(包含了乙個集合元素)(以此來保證集合內唯一的元素)。

- 字典的每個值都是null(沒什麼作用)。

- 圖示

四:編碼轉換

-當 集合內 不單單儲存整數/長度大於512 則會編碼的轉換 intset -> hashtable.

五:集合命令的實現

-

Redis 集合物件

集合物件的編碼可以是intset或者hashtable。intset編碼的集合物件使用整數集合作為底層實現,集合物件包含的所有元素都被儲存在整數集合裡面。舉個例子,以下 將建立乙個如圖 8 12 所示的intset編碼集合物件 另一方面,hashtable編碼的集合物件使用字典作為底層實現,字典的每...

Redis 雜湊物件和集合物件

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

11 Redis 集合物件

本文內容均來自 redis設計與實現 一書 集合物件的編碼可以是intset或者hashtable。intset編碼的集合物件使用整數集合作為底層實現,集合物件包含的所有元素都被儲存在整數集合裡面。hashtable編碼的集合物件使用字典作為底層實現,字典的每個鍵都是乙個字串物件,每個字串物件包含了...