Redis初探05——Redis的sets类型及操作

来源:互联网 发布:淘宝网天天特价首页 编辑:程序博客网 时间:2024/06/06 01:48

sets类型及操作
set是集合,他是String类型的无序集合。set是通过hashtable实现的,添加、删除和查找的复杂度都是O(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog中的tag功能。没有重复元素。
1、sadd
向名称为key的set中添加元素。 sadd set集合名称 元素。若添加的重复元素则不替换,返回0;

127.0.0.1:6379> sadd myset hello(integer) 1127.0.0.1:6379> sadd myset world(integer) 1127.0.0.1:6379> sadd myset world(integer) 0127.0.0.1:6379> smembers myset1) "world"2) "hello"

2、smembers 查看set集合中的元素

3、srem
删除名称为key的set中的元素。srem set名称 元素。删除成功返回1,否则返回0

127.0.0.1:6379> sadd myset2 one(integer) 1127.0.0.1:6379> sadd myset2 two(integer) 1127.0.0.1:6379> sadd myset2 three(integer) 1127.0.0.1:6379> smembers myset21) "three"2) "two"3) "one"127.0.0.1:6379> srem myset2 one(integer) 1127.0.0.1:6379> smembers myset21) "three"2) "two"127.0.0.1:6379> srem myset2 one(integer) 0127.0.0.1:6379>

4、spop
随机返回并删除名称为key的set中的一个元素。spop set名称

127.0.0.1:6379> sadd myset3 two(integer) 1127.0.0.1:6379> sadd myset3 three(integer) 1127.0.0.1:6379> sadd myset3 four(integer) 1127.0.0.1:6379> sadd myset3 five(integer) 1127.0.0.1:6379> smembers myset31) "five"2) "three"3) "two"4) "four"127.0.0.1:6379> spop myset3"four"127.0.0.1:6379> spop myset3"five"127.0.0.1:6379> spop myset3"two"127.0.0.1:6379> smembers myset31) "three"127.0.0.1:6379>

5、5、sdiff
返回所有给定set与第一个set的差集。sdiff set1 set2.注意:以第一个set为主,即返回的差集是set1中存在的。

127.0.0.1:6379> sadd myset3 two(integer) 1127.0.0.1:6379> sadd myset1 two(integer) 1127.0.0.1:6379> smembers myset31) "two"2) "three"127.0.0.1:6379> smembers myset11) "two"2) "one"127.0.0.1:6379> sdiff myset1 myset31) "one"127.0.0.1:6379> sdiff myset3 myset11) "three"

6、sidffstore
返回所有给定set与第一个set的差集,并将结果存在另一个set集合中。sdiffstore 保存差集的set 第一个set(为主) 第二个set。

127.0.0.1:6379> sdiff myset1 myset31) "one"127.0.0.1:6379> sdiff myset3 myset11) "three"127.0.0.1:6379> sdiffstore myset4 myset1 myset3(integer) 1127.0.0.1:6379> smembers myset41) "one"

7、sinter
返回所给定set的交集。sinter set1 set2.

127.0.0.1:6379> sinter myset1 myset31) "two"

8、sinterstore
返回给定set的交集,并将结果存在另一个set集合中。 sinterstore 保存交集的set set1 set2.

127.0.0.1:6379> sinterstore myset5 myset1 myset3(integer) 1127.0.0.1:6379> smembers myset51) "two"

9、sunion
返回给定set的并集。sunion set1 set2

127.0.0.1:6379> sunion myset1 myset31) "three"2) "two"3) "one"

10、sunionstore
返回给定set的并集,并将结果存在另一个set集合中。sunionstore 保存并集的set set1 set2.

127.0.0.1:6379> sunionstore myset6 myset1 myset3(integer) 3127.0.0.1:6379> smembers myset61) "three"2) "two"3) "one"

11、smove
从第一个keyt对应的set中删除元素,并将此元素添加到第二个对应的set中。smove set1(删除) set2(添加) 元素。

127.0.0.1:6379> smembers myset11) "two"2) "one"127.0.0.1:6379> smembers myset31) "two"2) "three"127.0.0.1:6379> smove mset1 myset3 one(integer) 0127.0.0.1:6379> smove myset1 myset3 one(integer) 1127.0.0.1:6379> smembers myset11) "two"127.0.0.1:6379> smembers myset31) "two"2) "three"3) "one"

12、scard
返回set中的元素个数。scard set名称。

127.0.0.1:6379> smembers myset31) "two"2) "three"3) "one"127.0.0.1:6379> scard myset3(integer) 3

13、sismember
查找元素是否是set中的元素。sismember set名称 查找元素。存在返回1,否则返回0。

127.0.0.1:6379> smembers myset31) "two"2) "three"3) "one"127.0.0.1:6379> scard myset3(integer) 3127.0.0.1:6379> sismember myset3 three(integer) 1127.0.0.1:6379> sismember myset3 five(integer) 0

14、srandmember
随机返回set中的一个元素,但不删除元素。srandmember set名称。

127.0.0.1:6379> srandmember myset3"two"127.0.0.1:6379> srandmember myset3"one"127.0.0.1:6379> smembers myset31) "two"2) "three"3) "one
0 0