美文网首页码农庄园
redis zset实现排行榜withscores的一个小坑

redis zset实现排行榜withscores的一个小坑

作者: 小马过河R | 来源:发表于2024-06-30 16:30 被阅读0次

我们写了三个数据到zset,分别用zRange($cachekey,0,-1,true)和zRange($cachekey,0,-1)输出如下:

咋一看貌似有问题,带withscores=true的排行榜排序貌似乱的,而不带withscores=true的排序是正确的。细心的小伙伴再看下,因为withscores=true后结果为map,关联数组,如果输出map则会按照map的key重新排序,所以看到的排序是无效的。而不带的则会按索引排,所以是正常的。这看起来是一个坑,其实就是一个大坑。排行榜实现时要特别注意。

如果要输出那就先json序列化处理一下,或者我们就不用withscores=true了自己遍历一下然后单独取zScore()取下榜单内的分数也行。

相关文章

  • 跳跃表python实践

    redis的zset常用场景:统计日活;打赏排行榜;天梯榜等zset底层基于跳跃表实现 跳跃表代码实现,练习版

  • redis实现热搜排行榜及历史搜索记录

    一. 前言 热搜排行榜实现要点: 性能/简单/时效 .redis性能高是公认的, redis的数据结构zset有个...

  • 使用redis实现排行榜

    写在前面 排行榜在很多地方都能使用到,redis的zset可以很方便地用来实现排行榜功能。本文是一个示例。 聊聊 ...

  • 通过redis的有序集合[zset] 实现延迟队列

    php使用redis的有序集合zset实现延迟队列 我们通过redis的有序集合zset来实现简单的延迟队列,将消...

  • t_zset.c

    Redis的t_zset.c是对zset数据结构的实现。zset是由 dict 和zskiplist来实现的。 当...

  • Redis3.2源码分析-跳跃表zskiplist

    跳跃表是Redis zset的底层实现之一,zset在member较多时会采用跳跃表作为底层实现,它在添加、删除、...

  • 基于redis的zset实现排行榜功能

    临近中秋,公司需要开发一款微信小游戏,里面有一个排行榜的功能主要需求包括: 用户可以上传每次游戏的分数,系统返回该...

  • redis-geo

    redis-geo 介绍 算法看geo那个 内部实现就是zset(skiplist) 实例

  • Redis ZSet底层实现

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

  • redis zset内部实现

    Redis对象Redis对象由redisObject结构体表示。 Redis中的每个键值对的键和值都是一个redi...

网友评论

    本文标题:redis zset实现排行榜withscores的一个小坑

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