redis数据类型 - set类型

来源:互联网 发布:优化的条件 英文 编辑:程序博客网 时间:2024/04/29 14:49

set 是集合,和我们数学中的集合概念相似,对集合的操作有添加删除元素,有对多个集合求交并差等操作,操作中key 理解为集合的名字。值不能重复。

Redis set string 类型的无序集合。

set 元素最大可以包含(232次方)个元素。

关于 set集合类型除了基本的添加删除操作,其他有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)通过这些操作可以很容易的实现sns 中的好友推荐和blog tag 功能。 


sadd 向名称为key的set中添加元素:

sadd myset1 asadd myset1 bsadd myset1 a#添加失败,已存在
smembers 查看集合:
smembers myset1
srem 删除名称为key的set中的元素member:
srem myset1 b
spop 随机返回并删除名称为key的set中的一个元素(用来抽奖很方便)

sdiff 差集:
sdiff myset2 myset3

sdiffstore 返回差集,并将结果存为另一个 key sadd myset5 1
sadd myset5 2
sadd myset5 4
sadd myset6 2
sadd myset6 3
sdiffstore newset myset5 myset6
将只存在于 myset5,不在 myset6 中的成员,另存为 newset 中
如果已存在 newset,则先清空 newset smembers newset
结果是: 
1) "1"
2) "4"


sinter 交集
sadd myset5 1
sadd myset5 2
sadd myset5 4
sadd myset6 2
sadd myset6 3
sinter myset5 myset6
返回 2


sinterstore 返回所有给定 key 的交集,并将结果存为另一个 key sinterstore newset myset5 myset6
smembers newset
结果:
1) "2" 


sunion 并集 
sunion myset5 myset6


sunionstore 返回所有给定 key 的并集,并将结果存为另一个 key 
sunionstore newset myset5 myset6
查看结果 myset5 myset6 的并集被保存到 newset 中 
smembers newset


smove移动
sadd myset7 a
sadd myset7 b
smove myset7 myset8 a#将set7中的a ,移到myset8中 
smembers myset7
smembers myset8


scard 返回名 set 集合的元素个数 
scard myset5


sismember is member测试元素是否在某一个 set 集合中 sadd myset9 a
sadd myset9 b
sismember myset9 b
sismember myset9 c


srandmember  随机返回一个名称为key的set 的一个元素,但是不删除元素
srandmember myset9




-------------------------------------------- 
sorted set 
--------------------------------------------
sorted set 是 set 的一个升级版本,它在 set 的基础上增加了一个顺序属性, 这一属性在添加修改元素的时候可以指定,每次指定后,
zset 会自动重新按新的值调整顺序。
和 set 一样 sorted set 也是 string 类型元素的集合, 不同的是每个元素都会关联一个 double 类型的 score


0 0
原创粉丝点击