数据类型set
Redis 的 Set 是 String 类型的无序集合。集合成员是唯一的,这就意味着集合中不能出现重复的数据。
Redis 中集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 – 1 (4294967295, 每个集合可存储40多亿个成员)。
sadd:向集合中添加一个或多个成员
向集合demo中添加一个成员,添加成功返回1,失败返回0
sadd demo name1
向集合demo中添加多个成员,成功就返回成功的数量,失败返回0
sadd demo name2 name3
注意:如果集合中已经存在该成员的话,在执行添加成员时返回0。
smembers :查询集合中的所有成员
查询demo集合中的所有成员
smembers demo
scard :查询集合中的成员个数
查询demo集合中的成员个数
scard demo
sismember :判断某个成员是否是该集合中的成员
判断name11是否是demo集合中的成员,是则返回1,否则返回0
sismember demo name11
spop:删除并返回集合中删除的一个随机成员
删除demo集合中一个随机成员,并返回删除的成员
spop demo
srem:指定删除集合中一个或多个成员,返回删除成功的个数
删除demo集合中的一个成员name1
srem demo name1
删除demo集合中的多个成员name2,name3
srem demo name2 name3
srandmember:查询集合中一个或多个随机成员
查询集合demo中不超过demo里的所有成员的个数时,只返回所要查询的随机成员个数
srandmember demo 1
当查询超过demo集合中的所有成员个数时,就会返回集合demo的所有成员
如:demo集合中成员个数只有6位,而我们要查询的是10位,这种情况只会返回6位
srandmember demo 10
集合与集合之前的使用
sdiff:查询集合的差集(查询前者集合不存在于后者集合的所有成员)
如:集合demo1中有成员:name1,name2,name3,集合demo2中有成员:name1,name5,name6
第一种情况
sdiff demo1 demo2 # 返回name2,name3
第二种情况
sdiff demo2 demo1 # 返回name5,name6
sdiffstore:把两个集合的差集添加到一个新的集合中
如:集合demo1中有成员:name1,name2,name3,集合demo2中有成员:name1,name5,name6
sdiffstore new_demo demo1 demo2
查询new_demo集合中的成员
smembers new_demo # 返回name2,name3
sinter:查询两个集合的交集(也就是两个集合中大家都有的成员就查询出来)
如:集合demo1中有成员:name1,name2,name3,集合demo2中有成员:name1,name5,name6
sinter demo1 demo2 # 返回name1
smove:将某个集合中的成员移动到另一个集合中去。
如:集合demo1中有成员:name1,name2,name3,集合demo2中有成员:name1,name5,name6
把demo2集合中的成员name6移动到demo1集合中
smove demo2 demo1 name6
sunion :查询给定集合的并集
如:集合demo1中有成员:name1,name2,name3,集合demo2中有成员:name1,name5,name6
sunin demo1 demo2 # 返回name1,name2,name3,name5,name6
sunionstore : 把给定集合的并集存储到新的集合中,返回成功的个数。
如:集合demo1中有成员:name1,name2,name3,集合demo2中有成员:name1,name5,name6
sunionstore new_demo demo1 demo2 # 返回 5