标签:
有序集合
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在给定区间的元素 |
标签:
原文地址:http://blog.csdn.net/yxpjx/article/details/51346823