set数据结构
常用命令
添加/删除元素
sadd key values[value1 value2 ...]
向set中添加数据,如果该key的值已有不会重复添加。
srem key members[member1 member2 ...]
删除set中指定的成员
![](https://img-blog.csdn.net/20170529224705530?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
获得集合中的元素
smembers key
获取set中的所有成员
sismember key member
判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在,无论集合中有多少元素都可以极速的返回结果。
![](https://img-blog.csdn.net/20170529224714093?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
集合的差集运算A-B
sdiff key1 key2 ...
返回key1和key2中相差的成员,而且与key的顺序有关,也即是说返回差集。
![](https://img-blog.csdn.net/20170529225436916?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
结果:
集合的交集运算A∩B
sinter key1 key2 ...
返回交集
![](https://img-blog.csdn.net/20170529225454214?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
结果:
集合的并集运算A∪B
sunion key1 key2 ,,,
返回并集
![](https://img-blog.csdn.net/20170529225513037?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
结果:
scard key
获取set中成员的数量
![](https://img-blog.csdn.net/20170529225532043?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
srandmember key
随机返回set中的一个成员
sdiffstore destination key1 key2 .. .
将key1.key2等set集合相差的成员存储在destination中
sinterstore destination key1 key2
...
将key1.key2等set集合返回的交集存储在destination中
![](https://img-blog.csdn.net/20170529225644507?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvZXJsaWFuMTk5Mg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
sunionstore destination key1 key2 ...
将key1.key2等set集合返回的并集存储在destination中
使用场景
1、可以使用redis的set数据类型跟踪一些唯一性的数据,比如访问某一博客的唯一IP地址信息,对于此场景,我们仅需在每次访问该博客时将访问者的IP存入redis中,set数据类型会自动保证IP地址的唯一性;
2、充分利用set数据类型的服务端聚合操作方便,高效的特性,可以用于维护数据对象之前的关联关系。比如所有购买某一电子设备的客户ID被存储在一个指定的set中,而购买另一种电子产品的客户ID被存储在另一个set中,如果此我们想获取有哪些客户同时购买了这两种商品,set的intersections命令就可以充分发挥它的方便和高效的优势。
intersections命令就可以充分发挥它的方便和高效的优势。