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。
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。
相关文章推荐
- NoSQL之Redis对set(集合)数据类型的操作之二
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- NoSQL之Redis对zset(有序集合)数据类型的操作
- Redis和nosql简介,api调用;Redis数据功能(String类型的数据处理);List数据结构(及Java调用处理);Hash数据结构;Set数据结构功能;sortedSet(有序集合)数
- Redis数据类型操作(四) —— Set
- Nosql之Redis: zset(有序集)数据类型及操作命令
- redis: sorted set数据类型与操作
- NoSQL之Redis(二)---Java操作Redis存储自定义类型数据
- redis:set数据类型与操作
- 【Redis缓存机制】7.SortSet排序集合类型操作
- Redis五大数据类型之无序集合set
- NoSQL之Redis对数据类型hash的操作
- Redis有序集合数据类型操作命令
- Redis数据类型--SortedSet(有序集合)
- C++ STL 有关于SET集合的基本操作,本文不包含涉及到自定义数据类型的排序
- Redis笔记5:数据类型之集合(Set)
- 【Redis缓存机制】7.SortSet排序集合类型操作
- Redis数据类型与指令详解之集合(t_set)
- Redis-Service.Stack.Redis对Redis基本数据类型String,List,Hash,Set,ZSet的操作
- redis:set数据类型和操作