redis-sorted sets 类型及操作

时间:2016-11-17 16:25:16 阅读:647次
redis-sorted sets 类型及操作

sorted set 是set 的一个升级版本,它在set 的基础上增加了一个顺序属性,这一属性在添加修改元素的时候可以指定,每次指定后,zset 会自动重新按新的值调整顺序。可以理解为有两列的mysql 表,一列存value,一列存顺序。操作中key 理解为zset 的名字。和set 一样sorted set 也是string 类型元素的集合,不同的是每个元素都会关联一个double类型的score。sorted set 的实现是skip list 和hash table 的混合体。

当元素被添加到集合中时,一个元素到score 的映射被添加到hash table 中,所以给定一个元素获取score 的开销是O(1),另一个score 到元素的映射被添加到skip list,并按照score 排序,所以就可以有序的获取集合中的元素。添加,删除操作开销都是O(log(N))和skip list 的开销一致,redis 的skip list 实现用的是双向链表,这样就可以逆序从尾部取元素。sorted set 最经常的使用方式应该是作为索引来使用.我们可以把要排序的字段作为score 存储,对象的id当元素存储


zadd key score member [score member ..] 向名称为key 的zset 中添加元素member,score 用于排序。如果该元素已经存在,则根据score 更新该元素的顺序

zrem key member [member ..] 删除名称为key 的zset 中的元素member

zincrby key increment member 如果在名称为key 的zset 中已经存在元素member,则该元素的score 增加increment;否则向集合中添加该元素,其score 的值为increment

zrange key start stop [widthscores] 

zrank key member 返回名称为key 的zset 中member 元素的排名(按score 从小到大排序)即下标,从0开始

zrevrank key member 返回名称为key 的zset 中member 元素的排名(按score 从大到小排序)即下标

zrevrange key start stop [widthscores] 

zrangebyscore key min max [widthscores] [limit offset count] 返回集合中score 在给定区间的元素

zcount key min max 返回集合中score 在给定区间的数量

zcard key 返回集合中元素个数

zscore key member 返回给定元素对应的score

zremrangebyrank key start stop 删除集合中排名在给定区间的元素

zremrangebyscore key min max 删除集合中score 在给定区间的元素

扫描二维码关注程序员爱笔记,接收更多资讯

评论

快速评论