1. zset(sorted set)操作
1.1 在set类型基础上每个元素都关联了一个分数,可以根据分数区间获取元素
1.2 与list区别:list是通过链表实现,获取两端数据极快,访问中间数据较慢,适合实现日志、新鲜事这类很少访问中间数据的。
zset使用散列表盒跳跃表实现,即使读取中间数据也很快。
list不能调整元素位置,但是zset可以通过更改元素分数来改变元素位置。
zset要比list更耗费内存。
1.3 命令:
1.3.1 增加元素:ZADD key score1 member1 score2 member2
如果元素已存在,则用新分数替换原有分数,返回值事新加入到集合中的元素个数(不包含已存在的元素),分数不仅支持整数,还支持双精度浮点数,分数可以使17E+5、1.5、+inf、-inf(代表正无穷和负无穷)
1.3.2 获得元素分数:ZSCORE key member
1.3.3 获得排名范围内的元素:
按索引:
ZRANGE key start stop [WITHSCORES](从小到大,从0开始,-1代表最后一个元素,如果两个元素分数相同,就按照字典顺序"0"<"9"<"A"<"Z"<"a"<"z")
ZREVRANGE (从大到小)
按指定分数范围:
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
ZREVRANGEBYSCORE
1.3.4 增加某元素分数:
ZINCRBY key increment member(返回更改后的分数,可以为负数,如果元素不存在,会先赋值0再进行操作)
1.3.5 获得集合中元素数量:
ZCARD key
1.3.6 获得指定分数范围内元素个数:
ZCOUNT key min max
1.3.7 删除一个或多个元素:
ZREM key member(返回成功删除元素数量)
1.3.8 按照排名范围(索引)删除:
ZREMRANGEBYRANK key start stop
1.3.9 按照分数范围删除:
ZREMRANGEBYSCORE key min max
1.4.0 获得元素排名:
ZRANK key member(从0开始,分数最小元素排名为0)
ZREVRANGE
1.4.1 计算交集:
ZINTERSTORE new keyNum key1 key2 [weights weight1 weight2] [AGREGATE SUM | MIN | MAX(默认为SUM)]
weights:可以指定单个key的权重,做操作之前先各自乘以相应权重再进行计算
1.4.2 计算并集:
ZUNIONSTORE