想要看更加舒服的排版、更加准时的推送 关注公众号“不太灵光的程序员” 每日八点有干货推送 公众号“不太灵光的程序员” 同时发布 《基于Redis实现消息队列的6种方案之方案简述(中)》 阅读原文
在《基于Redis实现消息队列的6种方案之方案简述(上)》中我们讲到了基于List类型实现的消息队列,今天我们来讲下优先队列的实现。
Redis有序集合的特点回忆下优先队列的特点,能保证每次取出的元素都是队列中优先级别最高的。这一特点是使用List类型无法满足的,数据只能是先进先出的,那我们来看下Sorted Set类型的特点。
有序集合(Sorted Set)是不允许重复的String类型元素的集合,且每个元素都会关联一个Double类型的分数。
有序集合的成员是唯一的,但分数是可以重复。集合中最大的成员数为 232 - 1 等于4294967295, 也就是每个集合可存储40多亿个成员。
基于Sorted Set以上的特点在实际开发中有许多的应用,比如做游戏的实时战绩排行榜、博客中文章点赞排行榜等各类排行榜和优先队列的实现。
基于Sorted Set的实现方案- ZADD在集合中添加一个带有分数的元素。
- ZRANGE返回有序集中,指定区间内的成员,其中成员的位置按分数值递增(从小到大)来排序;我们使用0,0区间来获取处于顶部的元素。 ZREVRANGE与ZRANGE不同的是成员的位置按分数值递减(从大到小)来排列。