美文网首页
redis有序集合实现多字段排序(score相同情况下如何排序)

redis有序集合实现多字段排序(score相同情况下如何排序)

作者: wuxuan94 | 来源:发表于2017-12-06 16:30 被阅读0次

排行榜需求:根据分数进行排序,分数相同时根据时间并列排序。
根据分数排序很容易实现:

正序
$redis = Yii::$app->redis->zrange($key,$start,$end,true);
//倒序
$redis = Yii::$app->redis->zrevrange($key,$start,$end,true);

分数$value相同时,根据时间先后进行排序:

$time = $max - time();

将分数与时间相对值进行拼接

$score = intval($value).$time;

生成有序集合

$redis = Yii::$app->redis->zadd($key,$score,$data);

这样再次读取有序集合,获取根据分数倒序、时间正序的排行榜

$redis = Yii::$app->redis->zrevrange($key,$start,$end,true);

注:$score必须为整型

相关文章

  • redis有序集合实现多字段排序(score相同情况下如何排序)

    排行榜需求:根据分数进行排序,分数相同时根据时间并列排序。根据分数排序很容易实现: 分数$value相同时,根据时...

  • elasticsearch排序

    默认按照_score排序,如果指定排序字段,_score字段不再经过计算,按照指定字段进行排序。但是如果指定字段是...

  • redis在python中要怎么用?

    去重 mongodb批量插入redis持续性数据 发布/订阅模式实现一对多的消息通信 有序集合进行排序

  • Redis ZSet底层实现

    Zset原理 有序集合对象是有序的。与列表使用索引下标作为排序依据不同,有序集合为每个元素设置一个分数(score...

  • redis有序集合排序

    一、集合1.设置集合 2.获取集合成员数 3.获取集合成员 二、有序集合1.设置集合中的索引及成员 2.返回集合中...

  • Redis高级特性——排序

    排序 对于排序的场景,在业务中会大量使用到,对于Redis,如果使用了有序集合,那么排序问题很容易解决,并且得分可...

  • Redis排序

    一、有序集合的集合操作 集合类型提供了强大的集合操作命令,但是如果需要排序就需要用到有序集合类型。Redis...

  • Redis中的排序

    1.有序集合的集合操作 集合类型提供了强大的集合操作命令,但是如果需要排序就要用到有序集合类型。Redis为了命令...

  • es使用与原理2 -- scoll技术,bouncing res

    ES的定制排序 默认情况下,是按照_score降序排序的,我们也可以定制排序规则 _score相关度评分TF&ID...

  • Redis数据结构 之 Sorted sets

    目录 集合唯一无序 有序集合分值有序 问题讨论相同分值的排序有序集合的并集 集合 唯一 无序 关于集合所有命令 可...

网友评论

      本文标题:redis有序集合实现多字段排序(score相同情况下如何排序)

      本文链接:https://www.haomeiwen.com/subject/ysuxixtx.html