Set是集合,它是string类型的无序集合。
set是通过hash table 实现的,添加、删除和查找的复杂度都是0(1)。
对集合我们可以取并集、交集、差集。
sadd 向名称为key的set中添加元素
sadd myset "hello"
smembers 查看集合
smembers myset
srem 删除元素
srem myset "one" 返回1 删除成功 返回0 删除失败
spop 随机返回并删除名称为key的set中的一个元素
spop myset
sdiff 返回所有给定key与第一个key的差集
sdiff myset1 myset2 (以前面一个为标准)
sdiffstore 返回所有给定key与第一个key的差集,并将结果存为另外一个key.
sdiffstore myset3 myset1 myset2 # 将 myset1 myset2 的差集存到myset3里面(以myset1为基准)
sinter 返回给定key的交集
sinter myset4 myset5
sinterstore 将交集存储到另外一个集合 sinterstore myset6 myset1 myset2 (与sdiffstore类似)
sunion 并集
sunion myset1 myset2
sunionstore 取并集存到新的set
sunionstore myset7 myset1 myset2 #返回插入的元素个数
smove 从第一个key对应的set中移除member并添加到第二个对应的set中
smove myset2 myset7 three #成功返回1 失败返回0
scard 查看集合的个数 scard myset2
sismember 测试member是否是名称为key的set的元素
sismember myset2 two 是返回1 不是返回0
srandmember 随机返回 (因为set无序)
srandmember myset7
sorted set是set的一个升级版本,它在set的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,
每次指定后,zset会自动重新按新的值调整顺序,可以理解为由两列的mysql,一列存value,一列存顺序。
其中key理解为zset的名字.
zadd 添加元素
zadd myzset 1 "one"
zadd myzset 2 "two"
zadd myzset 3 "three"
zrange myzset 0 -1 withscores
这里的0和-1代表的是索引 withscores 输出顺序号
zrem 删除名称为key的zset中的元素
zrem myzset two
zincrby 以指定值来增加(减少)顺序 对数序号进行加减
如果在名称为key的zset中,已经存在元素member,则该元素的sroce增加increment,
否则向该集合添加元素,其score的值为incrnment
zincrby myzset 2 one
再比如 four这个元素是不存在的
zrank 返回名称为key的zset中的member元素的排名 (按score从小到大排序) 即下标
zrank myzset two
zrevrank 反转 按照score从大到小排名 zrevrank myzset two
zrevrange 逆序 降序排序
zrevrange myzset 0 -1 withscores
zrangebyscore 返回下标在给定区间的元素
zrangebyscore myzset 2 3 withscore
zcount 返回集合中score在给定区间中的数量
zcount myzset 2 3
zcard 返回集合中所有元素的个数
zcard myzset
zremrangebyrank删除集合中在给定区间的元素 按照下标删除
zremrangebyrank myzset 1 2
zremrangebyscore删除集合中给定区间的元素 按照顺序删除
zremrangebyscore myzset 1 2