无序集合set类型
set集合,它是string类型的无序集合。set是通过hash table实现的,添加删除和查找的复杂度都是0(1)。对集合我们可以取并集,交集,差集。通过这些操作我们可以实现sns中的好友推荐blog和tag功能。
set常用命令
1. sadd 向集合中添加元素
格式: sadd myset1 “allen”
含义: 向无序集合myset1中添加元素allen,成功返回1。
2. smembers 查看集合中的所有元素
格式: smembers myset1
含义: 查看集合myset1中的所有元素
3. srem 删除名称为key的set中的元素
格式: srem myset1 “allen”
含义: 从集合myset1中删除一个名为allen的元素
注意: 删除成功返回1,删除失败返回0。
4. spop 随机弹出并且删除一个元素
格式: spop myset1
含义: 随机从myset1中随机弹出一个元素,并且删除掉。
注意: 因为set是无序列表,所以只能随机弹出元素。
5. sdiff 返回两个集合的差集
格式: sdiff myset1 myset2
含义: 比较两个集合的差集,并且返回myset1中的差集。
注意: 哪个集合在前,返回哪个集合的差集。比较上例中,返回的是myset1。
6. sdiffstore 返回两个集合的差集,并且把返回的差集放入第三个集合中
格式: sdiffstore myset3 myset1 myset2
含义: 比较集合myset1和myset2的差集,并且放入第三个集合myset3中。
7. sinter 返回给定集合的交集。
格式: sinter myset1 myset2
含义: 比较集合myset1和myset2的交集,并且返回。
8. sinterstore 返回给定集合的交集,并且把返回的交集放入第三个集合中
格式: sinterstore myset4 myset1 myset2
含义: 比较集合myset1和myset2的交集,并且放入第三个集合myset4中。
9. sunion 返回给定集合的并集。
格式: sunion myset1 myset2
含义: 比较集合myset1和myset2的并集,并且返回。
10. sunionstore 返回给定集合的并集,并且把返回的交集放入第三个集合中
格式: sunionstore myset5 myset1 myset2
含义: 比较集合myset1和myset2的并集,并且放入第三个集合myset5中。
11. smove 从一个集合中拿出一个元素,并且放入到另一个集合中去。
格式: smove myset1 myset2 “allen1”
含义: 从集合myset1中拿出allen1,放置到集合myset2中去。成功返回1,失败返回0。
例子:
127.0.0.1:6379> smembers myset1
1) "allen1"
2) "1"
3) "2"
4) "3"
127.0.0.1:6379> smembers myset2
1) "3"
2) "5"
127.0.0.1:6379> smove myset1 myset2 "allen1"
(integer) 1
127.0.0.1:6379> smembers myset2
1) "allen1"
2) "5"
3) "3"
127.0.0.1:6379>
127.0.0.1:6379> smembers myset1
1) "1"
2) "2"
3) "3"
12. scard 返回集合中元素的个数
格式: scard myset1
含义: 返回集合myset1中,元素的个数。
13. sismember 判断元素是否属于这个集合
格式: sismember myset2 "allen1"
含义: 判断元素allen1,是否属于集合myset2。是,返回1,不是,返回0。
14. srandmember 随机返回一个元素,但不删除。
格式: srandmember myset2
含义: 随机返回集合myset2中的一个元素,但是不删除。和spop形成对比,spop是弹出,也就是会删除的。
学PHP的小蚂蚁 原创博客 http://my.oschina.net/woshixiaomayi/blog