码迷,mamicode.com
首页 > 其他好文 > 详细

redis-sort set

时间:2016-05-13 01:50:09      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:

有序集合

sorted set和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当元素存储。

下面是sorted set相关命令:

zadd key score member

添加元素到集合,元素在集合中存在则更新对应score

zrem key member

删除指定元素,1表示成功,如果元素不存在返回0

zincrby key incr member

增加对应member的score值,然后移动元素并保持skip list保持有序。返回更新后的score值

zrank key member

返回指定元素在集合中的排名(下标),集合中元素是按score从小到大排序的

zrevrank key member

同上,但是集合中元素是按score从大到小排序

zrange key start end

类似lrange操作从集合中去指定区间的元素。返回的是有序结果

zrevrange key start end

同上,返回结果是按score逆序的

zrangebyscore key min max

返回集合中score在给定区间的元素

zcount key min max

返回集合中score在给定区间的数量

zcard key

返回集合中元素个数

zscore key element

返回给定元素对应的score

zremrangebyrank key min max

删除集合中排名在给定区间的元素

zremrangebyscore key min max

删除集合中score在给定区间的元素


redis-sort set

标签:

原文地址:http://blog.csdn.net/yxpjx/article/details/51346823

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!