文章目錄
- 🍃前言
- 🌳普通命令
- 🚩sadd
- 🚩smembers
- 🚩sismember
- 🚩scard
- 🚩spop
- 🚩smove
- 🚩srem
- 🌲集合間操作
- 🚩sinter
- 🚩sinterstore
- 🚩sunion
- 🚩sunionstore
- 🚩sdiff
- 🚩sdiffstore
- 🎍集合類型的內部編碼
- 🍀集合類型的使用場景
- ?總結
🍃前言
集合類型是用來保存多個字符串類型的元素的,但和列表類型是不同的,集合中
- 元素之間是?序的
- 元素不允許重復。
?個集合中最多可以存儲 2^32 - 1 個元素。Redis 除了?持集合內的增刪查改操作,同時還?持多個集合取交集、并集、差集,合理地使?好集合類型,能在實際開發中解決很多問題
🌳普通命令
🚩sadd
將?個或者多個元素添加到 set 中。注意,重復的元素?法添加到 set 中。
語法:
sadd key member [member ...]
時間復雜度:
- O(1)
返回值:
- 本次添加成功的元素個數
🚩smembers
獲取?個 set 中的所有元素,注意,元素間的順序是?序的。
語法:
semembers key
時間復雜度:
- O(N)
返回值:
- 所有元素的列表。
🚩sismember
判斷?個元素在不在 set 中。
語法:
sismember key member
時間復雜度:
- O(1)
返回值:
- 1 表?元素在 set 中。0 表?元素不在 set 中或者 key 不存在。
🚩scard
獲取?個 set 的基數(cardinality),即 set 中的元素個數。
語法:
scard key
時間復雜度:
- O(1)
返回值:
- set 內的元素個數。
🚩spop
從 set 中刪除并返回?個或者多個元素。注意,由于 set 內的元素是?序的,所以取出哪個元素實際是未定義?為,是隨機的
語法:
spop key [count]
時間復雜度:
- O(N), n 是 count
返回值:
- 取出的元素。
🚩smove
將?個元素從源 set 取出并放??標 set 中。
語法:
smove source destination member
時間復雜度:
- O(1)
返回值:
- 1 表?移動成功,0 表?失敗
🚩srem
將指定的元素從 set 中刪除。
語法:
srem key member [member ...]
時間復雜度:
- O(N), N 是要刪除的元素個數.
返回值:
- 本次操作刪除的元素個數。
🌲集合間操作
對于集合,我們有三種基本操作,分別為交集、并集、差集
🚩sinter
獲取給定 set 的交集中的元素
語法:
sinter key [key ...]
時間復雜度:
- O(N * M), N 是最?的集合元素個數. M 是最?的集合元素個數.
返回值:
- 交集的元素。
🚩sinterstore
獲取給定 set 的交集中的元素并保存到?標 set 中。
語法:
sinterstore destination key [key ...]
時間復雜度:
- O(N * M), N 是最?的集合元素個數. M 是最?的集合元素個數.
返回值:
- 交集的元素個數
🚩sunion
獲取給定 set 的并集中的元素。
語法:
sunion key [key ...]
時間復雜度:
- O(N), N 給定的所有集合的總的元素個數.
返回值:
- 并集的元素
🚩sunionstore
獲取給定 set 的并集中的元素并保存到?標 set 中。
語法:
sunionstore destination key [key ...]
時間復雜度:
- O(N), N 給定的所有集合的總的元素個數.
返回值:
- 并集的元素個數。
🚩sdiff
獲取給定 set 的差集中的元素
語法:
sdiff key [key ...]
時間復雜度:
- O(N), N 給定的所有集合的總的元素個數.
返回值:
- 差集的元素
🚩sdiffstore
獲取給定 set 的差集中的元素并保存到?標 set 中
語法:
sdiffstore destination key [key ...]
時間復雜度:
- O(N), N 給定的所有集合的總的元素個數.
返回值:
- 差集的元素個數
🎍集合類型的內部編碼
集合類型的內部編碼有兩種:
- intset(整數集合):當集合中的元素都是整數并且元素的個數?于set-max-intset-entries 配置(默認 512 個)時,Redis 會選? intset 來作為集合的內部實現,從?減少內存的使?。
- hashtable(哈希表):當集合類型?法滿? intset 的條件時,Redis 會使? hashtable 作為集合的內部實現。
🍀集合類型的使用場景
集合類型?較典型的使?場景是標簽(tag)。
例如 A ??對娛樂、體育板塊?較感興趣,B??對歷史、新聞?較感興趣,這些興趣點可以被抽象為標簽。有了這些數據就可以得到喜歡同?個標簽的?,以及??的共同喜好的標簽,這些數據對于增強??體驗和??黏度都?常有幫助。
例如?個電?商務?站會對不同標簽的??做不同的產品推薦
?總結
關于《【Redis】 關于 Redis 集合類型》就講解到這兒,感謝大家的支持,歡迎各位留言交流以及批評指正,如果文章對您有幫助或者覺得作者寫的還不錯可以點一下關注,點贊,收藏支持一下