redis無序集合set型別詳解

2021-07-30 23:20:07 字數 979 閱讀 1664

redis中的set是string型別的無序集合,set元素最大可以包含2的32次方-1個元素。利用set集合型別,我們可以快速取出n個key之間的並集、交集、差集等,從而輕鬆解決mysql等資料庫不容易實現這種運算的缺陷。

與上篇中list型別不同的是,set集合不允許出現重複的元素,因此set型別也可以快速判斷某一元素是否存在。

應用場景:取出兩個qq號中的共同的好友數;判斷某個ip是否在白名單內等。

以下是無序集合型別(set)的一些常用操作命令:

1.【 sadd key vaule 】 往集合中插入乙個元素,如果value值已存在集合中,則返回0,不會被重複插入。

2.【 sinter key1 key2 ... keyn 】 取出n個key之間的交集。比如 key1裡面有值a,b,c,d,e,key2裡面有d,e,f,sinter key1 key2返回d,e。

3.【 sunion key1 key2 ... keyn 】 取出n個key之間的並集。比如 key1裡面有值a,b,c,d,e,key2裡面有d,e,f,sunion key1 key2返回a,b,c,d,e,f。

4.【 sdiff  key1 key2 】 取出n個key之間的差集。比如 key1裡面有值a,b,c,d,e,key2裡面有d,e,f,sdiff key1 key2返回a,b,c;反過來sdiff key2 key1返回f。

5.【 smembers key 】 返回key集合中所有的元素,結果是無序的。

6.【 sismember key value 】 檢視value這個值是否在key集合中。存在返回1,不存在返回0。

7.【 scard key 】 返回集合中有多少個元素。

8.【 smove key1 key2 value 】 把value從key1中移到key2中去。

9.【 srem key value1 value2 ... valuen 】 從key集合中刪掉某些元素。

由上可見,合理的運用set型別,效率可以實現幾何倍增!

redis之集合型別(set)

redis集合是乙個無序的字串合集。你可以以o 1 的時間複雜度 無論集合中有多少元素時間複雜度都為常量 完成 新增,刪除以及測試元素是否存在的操作。redis集合有著不允許相同成員存在的優秀特性。向集合中多次新增同一元素,在集合中最終只會存在乙個此元素。實際上這就意味著,在新增元素前,你並不需要事...

Redis(六)set集合型別

set集合和list列表十分的相似,都可以儲存多個字串。但是list列表可以儲存重複值,而set集合中不可重複。一 集合資料結構 其中的user為鍵名,其可以包含多個 不重複 的元素,各不相同 user camellia1 camellia2 camellia3 二 操作命令 這裡分兩種,linux...

redis集合set操作

sadd key value1 value2 向集合中增加元素 smembers key 檢視集合中的元素,由於集合的無序性,檢視的元素可能和插入式順序不一樣 srem value1 value2.刪除集合中名為value1,value2.的元素 返回值 忽略不存在的元素,返回真正刪除元素的個數 s...