database - 实现redis排行榜
问题描述
我已经分类了用于我作为排行榜的集合。
我想从排行榜中只检索 N 个元素。
例如,我的排序集包含 100 万条记录。我的 userId(排序集中的值)是 123,得分为 100
我只想在我的用户上方获得 10 个用户,在我的用户下方获得 10 个用户。
目前,我的逻辑是这样的:
- 我打电话给 ZRANK 来获取我的用户排名。
- 我打电话给 ZRANGE [key] [USERRANK - 10] [USERRANK + 10]
现在,我有了想要从 Redis 检索的分数和用户,但我没有这些用户的排名。
有没有办法也获得排名?
我不想为每个用户调用 ZRANK。
解决方案
不,没有 Redis 方式可以做到这一点,但是由于您已经知道用户的等级,您可以将其用作您的“基础”,根据ZRANGE
's上成员的位置减少/增加回复。由于它是最多 21 个成员的绑定范围,因此这是一个简单的计算,可以在客户端以恒定的复杂性完成。
推荐阅读
- amazon-cloudformation - 使用 cloudformation 启动 ec2 实例
- bash - 按多列值拆分 csv 文件并保留标题
- javascript - Google 跟踪代码管理器中的元素可见性触发器显着低于报告
- selenium - 在 Selenium 中设置磁盘缓存大小,同时抓取多个网站?
- rest - Kafka 消息 VS REST 调用
- amazon-web-services - 有关 Amazon Sagemaker groundtruth 的信息
- javascript - 将javascript画布路径保存到数据库中的正确方法
- java - 实现特定数据存储的最佳方法
- javascript - 通过javascript对该数组进行排序的最佳解决方案
- android - 屏幕密度为 440 dpi 的设备与在 Google Play 上发布的应用不兼容