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

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) 1
127.0.0.1:6379> sadd myset world
(integer) 1
127.0.0.1:6379> sadd myset world
(integer) 0
127.0.0.1:6379> smembers myset
1) "world"
2) "hello"

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

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

127.0.0.1:6379> sadd myset2 one
(integer) 1
127.0.0.1:6379> sadd myset2 two
(integer) 1
127.0.0.1:6379> sadd myset2 three
(integer) 1
127.0.0.1:6379> smembers myset2
1) "three"
2) "two"
3) "one"
127.0.0.1:6379> srem myset2 one
(integer) 1
127.0.0.1:6379> smembers myset2
1) "three"
2) "two"
127.0.0.1:6379> srem myset2 one
(integer) 0
127.0.0.1:6379>

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

127.0.0.1:6379> sadd myset3 two
(integer) 1
127.0.0.1:6379> sadd myset3 three
(integer) 1
127.0.0.1:6379> sadd myset3 four
(integer) 1
127.0.0.1:6379> sadd myset3 five
(integer) 1
127.0.0.1:6379> smembers myset3
1) "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 myset3
1) "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) 1
127.0.0.1:6379> sadd myset1 two
(integer) 1
127.0.0.1:6379> smembers myset3
1) "two"
2) "three"
127.0.0.1:6379> smembers myset1
1) "two"
2) "one"
127.0.0.1:6379> sdiff myset1 myset3
1) "one"
127.0.0.1:6379> sdiff myset3 myset1
1) "three"

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

127.0.0.1:6379> sdiff myset1 myset3
1) "one"
127.0.0.1:6379> sdiff myset3 myset1
1) "three"
127.0.0.1:6379> sdiffstore myset4 myset1 myset3
(integer) 1
127.0.0.1:6379> smembers myset4
1) "one"

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

127.0.0.1:6379> sinter myset1 myset3
1) "two"

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

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

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

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

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

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

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

127.0.0.1:6379> smembers myset1
1) "two"
2) "one"
127.0.0.1:6379> smembers myset3
1) "two"
2) "three"
127.0.0.1:6379> smove mset1 myset3 one
(integer) 0
127.0.0.1:6379> smove myset1 myset3 one
(integer) 1
127.0.0.1:6379> smembers myset1
1) "two"
127.0.0.1:6379> smembers myset3
1) "two"
2) "three"
3) "one"

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

127.0.0.1:6379> smembers myset3
1) "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 myset3
1) "two"
2) "three"
3) "one"
127.0.0.1:6379> scard myset3
(integer) 3
127.0.0.1:6379> sismember myset3 three
(integer) 1
127.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 myset3
1) "two"
2) "three"
3) "one
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章