您的位置:首页 > 数据库 > Redis

NoSQL之Redis对set(集合)数据类型的操作之一

2013-12-03 10:12 756 查看
一、简介

Set是集合,它是string类型的无序集合。set是通过hash table实现的,添加、删除和查找的复杂度都是0(1)。对集合我们可以取并集、交集、差集。通过这些操作我们可以实现sns中的好友推荐和blog的tag功能。

无需集合。

二、set的相关操作

1.sadd setkey value:向名称为setkey的set中添加value元素。添加成功返回1,添加失败返回0。同一个值不能重复添加。

127.0.0.1:6379> sadd setkey 'hello'

(integer) 1

127.0.0.1:6379> sadd setkey 'world'

(integer) 1

127.0.0.1:6379> sadd setkey 'world'

(integer) 0

127.0.0.1:6379> smembers setkey

1) "world"

2) "hello"


添加进去的元素排序是随机的,无序的。

2.smembers setkey:获取setkey对应的集合中的所有元素。例子同1

3.srem setkey value:删除名称为setkeyt中的value元素。删除成功返回值为1

127.0.0.1:6379> smembers setkey

1) "world"

2) "hello"

127.0.0.1:6379> srem setkey hello

(integer) 1

127.0.0.1:6379> smembers setkey

1) "world"


4.spop setkey:从setkey的集合中随机弹出并且删除一个元素。

127.0.0.1:6379> smembers setkey

1) "2000"

2) "world"

3) "4000"

4) "longjian"

5) "3000"

6) "hello"

7) "zhiqiang"

127.0.0.1:6379> spop setkey

"longjian"

127.0.0.1:6379> spop setkey

"4000"

127.0.0.1:6379> spop setkey

"hello"


127.0.0.1:6379> smembers setkey

1) "world"

2) "3000"

3) "2000"

4) "zhiqiang"



无规律随机弹出,并且将该元素从集合删除。

5.sdiff setkey1 setkey2:返回两个集合的差集,以setkey1为标准,谁在前面以谁为标准。

127.0.0.1:6379> smembers setkey

1) "world"

2) "3000"

3) "2000"

127.0.0.1:6379> smembers setkey1

1) "world"

2) "hello"

3) "2000"

127.0.0.1:6379> sdiff setkey setkey1

1) "3000"

127.0.0.1:6379> sdiff setkey1 setkey

1) "hello"


6.sdiffstore setkey3 setkey1 setkey2:返回setkey1,setkey2,setkey3的差集,并将结果存入到setkey3中。如果成功则返回1

127.0.0.1:6379> smembers setkey1

1) "world"

2) "hello"

3) "2000"

127.0.0.1:6379> smembers setkey2

1) "3000"

2) "world"

3) "2000"

127.0.0.1:6379> sdiffstore setkey3 setkey1 setkey2

(integer) 1

127.0.0.1:6379> smembers setkey3

1) "hello"

127.0.0.1:6379> sdiffstore setkey3 setkey2 setkey1

(integer) 1

127.0.0.1:6379> smembers setkey3

1) "3000"


从上面的例子很容易看出,如果连续用sdiifstore在一个key中存取差集的结果,是回覆盖掉之前的value。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: