04_NoSQL数据库之Redis数据库:set类型和zset类型(一)

2015-02-25 21:42:11 · 作者: · 浏览: 122
??
sets类型及操作
?
Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加,删除和查找复杂度都是0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。
?
?
?
sadd:向集合中添加一个元素,通名称为key的set中添加元素。
?
[toto@localhost bin]$ ./redis-cli
?
127.0.0.1:6379> sadd myset1 one
?
(integer) 1
?
127.0.0.1:6379> sadd myset1 two
?
(integer) 1
?
127.0.0.1:6379> sadd myset1 two 再次添加的时候添加不成功了。
?
(integer) 0
?
127.0.0.1:6379>
?
通过smembers查看集合中有哪些元素
?
127.0.0.1:6379> smembers myset1
?
1) "two"
?
2) "one"
?
127.0.0.1:6379>
?
?
?
srem:删除名称为key的set中的元素,删除成功返回1,删除失败返回0
?
127.0.0.1:6379> smembers myset2
?
1) "two"
?
2) "one"
?
3) "three"
?
127.0.0.1:6379> srem myset2 two
?
(integer) 1
?
127.0.0.1:6379> srem myset2 two
?
(integer) 0
?
127.0.0.1:6379> smembers myset2
?
1) "one"
?
2) "three"
?
127.0.0.1:6379>
?
?
?
spop:无法指定弹出元素,是随机返回并删除名称为key的set中一个元素。
?
127.0.0.1:6379> sadd myset3 one
?
(integer) 1
?
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) "four"
?
2) "three"
?
3) "one"
?
4) "two"
?
5) "five"
?
127.0.0.1:6379> spop myset3 //随机弹出的是three
?
"three"
?
127.0.0.1:6379> smembers myset3
?
1) "one"
?
2) "four"
?
3) "five"
?
4) "two"
?
127.0.0.1:6379> spop myset3 //随机弹出的是four
?
"four"
?
127.0.0.1:6379> smembers myset3
?
1) "one"
?
2) "five"
?
3) "two"
?
127.0.0.1:6379>
?
?
?
sdiff:两个集合的差集。
?
返回所有给定key与第一个key的差集。
?
?
?
127.0.0.1:6379> smembers myset3
?
1) "one"
?
2) "four"
?
3) "five"
?
4) "two"
?
127.0.0.1:6379> spop myset3
?
"four"
?
127.0.0.1:6379> smembers myset3
?
1) "one"
?
2) "five"
?
3) "two"
?
127.0.0.1:6379> sadd myset2 three
?
(integer) 1
?
127.0.0.1:6379> sadd myset2 four
?
(integer) 1
?
127.0.0.1:6379> sadd myset2 one
?
(integer) 1
?
127.0.0.1:6379> smembers myset2
?
1) "one"
?
2) "four"
?
3) "three"
?
127.0.0.1:6379> sdiff myset2 myset3 //去除myset2中含有与myset3元素的值。
?
1) "three"
?
2) "four"
?
127.0.0.1:6379>
?
?
?
sdiffstore:返回所有给定key与第一个key的差集,并将结果存为另一个key.
?
?
?
sdiffstore myset4 myset2 myset3表示的意思是将myset3和myset2的差集存储到myset4里面。
?
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> sadd myset3 one
?
(integer) 1
?
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> sadd myset3 six
?
(integer) 1
?
127.0.0.1:6379> sdiff myset2 myset3
?
(empty list or set)
?
127.0.0.1:6379> sdiff myset3 myset2 //显示myset3中含有myset2的元素
?
1) "six"
?
2) "five"
?
3) "fo