06_Redis_Set命令
一:Redis 集合(Set)
Redis 的 Set 是 String 类型的无序集合;集合成员是唯一的,这就意味着集合中不能出现重复的数据 -------- HashSet(无序不重复)。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
二:Redis命令:通常涉及到两个大数据集合的并集,交集,差集运算
2.1:赋值:sadd key values[value1、value2…]:向set中添加数据,如果该key的值已有则不会重复添加
2.2:取值:smembers key:获取set中所有的成员
sismember key member:判断参数中指定的成员是否在该set中,1表示存在,0表示不存在或者该key本身就不存在;(无论集合中有多少元素都可以极速的返回结果)
2.3:删值:srem key members[member1、member2…]:删除set中指定的成员
集合运算:
2.4:差集运算:sdiff key1 key2…:返回key1与key2中相差的成员,而且与key的顺序有关;即返回差集;
(属于A并且不属于B的元素构成的集合)
2.5:交集运算:sinter key1 key2 key3…:返回交集。
(属于A且属于B的元素构成的集合)
2.6:并集运算:sunion key1 key2 key3…:返回并集
(属于A或者属于B的元素构成的集合)
2.7:扩展命令:scard key:获取set中成员的数量
srandmember key:随机返回set中的一个成员
三:Set使用场景
1、可以使用Redis的set数据类型跟踪一些唯一性数据,比如访问某一博客的唯一IP地址信息。对于此场景,我们仅需在每次访问该博客时将访问者的IP存入Redis中,set数据类型会自动保证IP地址的唯一性。
2、充分利用set类型的服务端聚合操作方便、高效的特性,可以用于维护数据对象之间的关联关系。比如所有购买某一电子设备的客户id被存储在一个指定的set中,而购买另外一种电子产品的客户id被存储在另外一个set中,如果此时我们想获取有哪些客户同时购买了这两种商品时,set的intersections命令就可以充分发挥它的方便和效率的优势了。