Redis張工的set儲存結構(實現)原理

2021-10-24 21:52:49 字數 538 閱讀 1259

redis 用intset 或hashtable 儲存set。如果元素都是整數型別,就用inset 儲存。

如果不是整數型別,就用hashtable(陣列+鍊錶的存來儲結構)。

問題:kv 怎麼儲存set 的元素?key 就是元素的值,value 為null。

如果元素個數超過512 個,也會用hashtable 儲存。

配置檔案redis.conf

set-max-intset-entries 512

127.0.0.1:6379> sadd iset 1 2 3 4 5 6

(integer) 6

127.0.0.1:6379> object encoding iset

"intset"

127.0.0.1:6379> sadd myset a b c d e f

(integer) 6

127.0.0.1:6379> object encoding myset

"hashtable"

redis的資料結構 儲存set

在redis中,我們可以將set型別看作為沒有排序的字元集合,和list型別一樣,我 們也可以在該型別的資料值上執行新增 刪除或判斷某一元素是否存在等操作。需要 說明的是,這些操作的時間是常量時間。set可包含的最大元素數是4294967295。和list型別不同的是,set集合中不允許出現重複的元...

Redis中的set儲存型別

在redis中,我們可以將set型別看作為沒有排序的字元集合,和list型別一樣,我們也可以在該型別的資料值上執行新增 刪除或判斷某一元素是否存在等操作。和list型別不同的是,set集合中不允許出現重複的元素,這一點和c 標準庫中的set容器是完全相同的。換句話說,如果多次新增相同元素,set中將...

redis的儲存結構

hash 是乙個string 型別的field 和value 的對映表。hash特別適合儲存物件,相對於將物件的每個欄位存成單個string型別。乙個物件儲存在hash型別中會占用更少的記憶體,並且可以更方便的訪問整個物件。我們簡單舉個例項來描述下hash的應用場景,比如我們要儲存乙個使用者資訊物件...