(六)Redis数据库-Redis数据类型Set(集合)

x33g5p2x  于2021-12-19 转载在 其他  
字(1.0k)|赞(0)|评价(0)|浏览(344)

我的系统版本为CentOS7.5,redis版本5.0.4

Set(集合)

Redis的Set是string类型的无序集合。

集合中的元素有唯一性,重复添加会被忽略。

集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。

集合中最大的成员数为 232 - 1(4294967295, 每个集合可存储40多亿个成员)。

#userset集合中添加super1 super2 super3
sadd userset super1 super2 super3

#读取userset集合中的元素
smembers userset

#获取userset集合中的元素个数
scard userset

#判断super是否为userset集合成员
sismember userset super

#移动super元素从userset到newuser,移动为原子操作,如果不指定元素或者不存在的元素则不进行操作返回0
smove userset super newuser

#随机读取userset中的n个元素,如果不指定数量默认为1一个元素
srandmember userset 5

#随机读取userset中的n个元素,并移除,如果不指定数量默认为1一个元素
spop userset 5

#迭代userset中以s开头的元素
sscan userset 0 match s*

#移除userset中的指定元素
srem userset user1 user2

差并集运算:
#差集运算, Redis Sdiff 命令返回给定集合之间的差集。不存在的集合 key 将视为空集。差集的结果来自前面的 FIRST_KEY ,而不是后面的 OTHER_KEY1,也不是整个 FIRST_KEY OTHER_KEY1..OTHER_KEYN 的差集。
key1 = {a,b,c,d}
key2 = {c}
key3 = {a,c,e}
SDIFF key1 key2 key3 = {b,d}

#差集运算,并将结果保存在myset中
sdiffstore myset userset newuser

#计算userset和newuser的交集
sinter userset newuser

#计算userset和newuser的交集,并将结果保存在myset中
sinterstore myset userset newuser

#计算并集
sunion userset newuser

#计算并集,并将结果保存在myset中
sunionstore myset userset newuser

更多详细命令:http://doc.redisfans.com/index.html

相关文章