Redis 排序集和解决关系

2024-04-26

我正在使用 Redis 排序集来存储我正在处理的项目的排名。我们没有预料到(!)我们想要如何处理关系。 Redis 按字典顺序对具有相同分数的条目进行排序,但我们想要做的是对具有相同分数的所有条目给予相同的排名,例如在以下情况

redis 127.0.0.1:6379> ZREVRANGE foo 0 -1 WITHSCORES
1) "first"
2) "3"
3) "second3"
4) "2"
5) "second2"
6) "2"
7) "second1"
8) "2"
9) "fifth"
10) "1"

我们想考虑second1, second2 and second3因为两者都具有位置 2,并且fifth拥有位置 5。因此,第三或第四位置没有条目。ZREVRANK在这里没有用,那么获得我正在寻找的号码的最佳方法是什么?


在我看来,一种方法是编写一个小 Lua 脚本并使用EVAL命令。结果运算仍然具有对数复杂度。

例如,假设我们对以下职位感兴趣:second2。在脚本中,首先我们得到它的分数ZSCORE,获得 2。然后我们使用该分数获得第一个条目ZRANGEBYSCORE,得到second3。我们所追求的位置就是ZREVRANK of second3 plus 1.

redis 127.0.0.1:6379> ZSCORE foo second2
"2"
redis 127.0.0.1:6379> ZREVRANGEBYSCORE foo 2 2 LIMIT 0 1
1) "second3"
redis 127.0.0.1:6379> ZREVRANK foo second3
(integer) 1

所以脚本可能是这样的

local score = redis.call('zscore', KEYS[1], ARGV[1])
if score then
  local member = redis.call('zrevrangebyscore', KEYS[1], score, score, 'limit', 0, 1)
  return redis.call('zrevrank', KEYS[1], member[1]) + 1
else return -1 end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Redis 排序集和解决关系 的相关文章

  • LuaJ 导入 Lua 方法

    我正在使用 LuaJ 并且我有一个 lua文件充满了一堆函数 如何通过 LuaJ 导入这些函数以在 Java 中使用 一种选择是将文件编译为 Java 代码并导入它 另一种方法是使用可嵌入解释器直接从 Java 代码中调用 Lua 文件 E
  • 关闭 Löve2D 中的抗锯齿功能

    我在用着L ve2D http love2d org用于编写一个小游戏 L ve2D 是 Lua 的开源游戏引擎 我遇到的问题是 当您在非整数位置绘制精灵时 某些抗锯齿过滤器会自动应用于精灵 love graphics draw sprit
  • 如何在Redis中只保存一个数据库?

    我是 Redis 新手 有一个与备份相关的问题 目前 我有一个实例在 Windows 服务器上运行 在这个实例中 我当前有一项 工作 将数据存储在一个数据库中 我不想备份这些数据 我必须创造一份新工作 我的第一个想法是将数据存储在另一个数据
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • Lua中有状态迭代器和无状态迭代器的区别

    Lua中无状态和有状态迭代器有什么区别 请详细解释一下 什么时候需要使用无状态 什么时候需要使用另一种 我需要例子来理解这个概念 首先让我们就一个定义达成一致 在 Lua 中 迭代器是function 类似对象 每次调用时都会返回序列中的下
  • 节点应用程序之间共享会话?

    我目前有两个独立的节点应用程序在两个不同的端口上运行 但共享相同的后端数据存储 我需要在两个应用程序之间共享用户会话 以便当用户通过一个应用程序登录时 他们的会话可用 并且他们似乎已登录到另一个应用程序 在本例中 它是一个面向公众的网站和一
  • 如何延长 django-redis 中的缓存 ttl(生存时间)?

    我正在使用 django 1 5 4 和 django redis 3 7 1 我想延长缓存的 ttl 生存时间 当我取回它时 这是示例代码 from django core cache import cache foo cache get
  • 如何使用 Lua 运行可执行文件?

    我有一个可执行文件想要使用 Lua 运行 我该怎么做 似乎无法在任何地方找到有关此的任何文档 您可以使用 Lua 原生的 执行 命令 Example os execute c temp program exe 资料来源 Lua 指南 os
  • 在 Lua 中只归档一次

    我想知道是否有一种方法可以只执行一次 lua 文件 并且后续尝试执行该 lua 文件将导致无操作 我已经考虑过做一些类似于 C header 的 if else endif 技巧的事情 我想知道是否有一个标准方法来实现这一点 James w
  • Redis 中存储整数和字符串的区别

    这两个命令有什么区别吗 LPUSH myset 123 LPUSH myset 123 我想存储大约 500 万个整数 并且我想以最有效的方式做到这一点 不 没有什么区别 两者都存储为字符串 从redis io http redis io
  • 克隆一个lua状态

    最近 我在使用C 和Lua进行开发时遇到了很多困难 我的情况是 由于某种原因 我的 C 程序中可能有数千个 Lua 状态 但这些状态在初始化后应该是相同的 当然 我可以为每个状态执行 luaL loadlibs 和 lua loadfile
  • 表长度运算符的性能

    卢阿有 运算符来计算用作数组的表的 长度 在诸如 C 之类的语言中 计算出某个内容的长度后 通常不会再次计算它 例如int len strlen string 这在 Lua 中有什么不同吗 其中一个的效率是否比另一个低 显然这可能不会显示显
  • 批量将Dictionary中的数据设置到Redis中

    我正在使用 StackExchange Redis DB 插入键值对字典Batch如下 private static StackExchange Redis IDatabase database public void SetAll
  • Redis 是否使用用户名进行身份验证?

    我已经在我的环境中设置了Redis 并且只看到了通过密码授权的部分 有没有办法也设置用户名 还是只能通过密码验证 Redis 6 上有 ACL 这些都有一个用户名 查看https redis io topics acl https redi
  • 将值存储在 lua 的 userdata 对象中

    我想做的是这样的 object foo bar print object foo 其中 对象 是用户数据 我已经用谷歌搜索了一段时间 使用关键字 newindex 和 lua rawset 但我找不到任何可以实现我想要的功能的示例 我想用
  • Redis AOF fsync(始终)与 LSM 树

    我对日志结构化合并树 LSM 树 的理解是 它利用了附加到磁盘非常快 因为它不需要查找 这一事实 只需将更新附加到预写日志并返回到客户端即可 我的理解是 这仍然提供了立即的持久性 同时仍然非常快 我不认为 Redis 使用 LSM 树 它似
  • memcache、redis 和 ehcache 作为分布式缓存框架的比较 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要做出的决定之一是在我的系统中使用什么缓存框架 有这么多可供选择 我目前正在研究 redis ehcache 和 memcached
  • 如何将 Lua 粘合到 C++ 代码?

    您使用 Luabind toLua 或其他库 如果使用 是哪一个 还是根本不使用 每种方法都有哪些优点和缺点 我不太同意 自己投票 将基本类型和静态 C 函数绑定到 Lua 是微不足道的 是的 但是当你开始处理表和元表时 情况就会发生变化
  • Redis - 错误:值不是有效的浮点数

    我在 Redis 中有一个排序集 我试图通过在Python代码中使用zincrby来更新特定元素的计数器值 例如 conn zincrby usersSet float 1 user1 但它显示错误为 错误 值不是有效的浮点数 我在 cli
  • Microsoft.Extensions.Caching.Redis 选择与 db0 不同的数据库

    一个关于了解使用哪个redis数据库以及如何配置它的问题 我有一个默认值ASP NET Core Web 应用程序和默认配置的本地redis服务器 含15个数据库 通过包管理控制台我已经安装了 Install Package Microso

随机推荐

  • 如何获取 CakePHP 3.0 中最后一个插入 ID?

    使用 CakePHP 3 0 beta 似乎是一个简单的问题 但我搜索了文档但找不到任何东西 使用 this gt Model gt save 插入新记录后 我想获取新创建记录的 auto increment 主键 ID 使用 Cake 2
  • 使用 ALT+TAB 切换程序/窗口或单击任务栏时不会触发 VisibilityChange 事件

    问题在于事件 visibilitychange 的行为 已触发 当我切换到浏览器窗口内的不同选项卡时 当我单击浏览器窗口的最小化 恢复按钮时 还行吧 它没有被触发 当我使用 ALT TAB 切换到不同的窗口 程序时 当我切换到不同的窗口 程
  • 有没有办法将 spring boot 与 tcps 连接到数据库?

    我正在使用 Oracle 数据库 12c 和带有数据 JPA 的 Spring Boot 2 3 我的目标是连接钱包并将 TCPS 发送到数据库 当我搜索时 网上没有这方面的示例或指南 任何人都可以解释并举一些例子吗 如何从 Java 连接
  • Laravel 5 - 永远保持登录状态

    我想放入login页面选中 保持登录状态 复选框 除非用户注销 否则永远不应该结束用户的会话 我知道在 app config session php 中有这些变量 lifetime gt 60 expire on close gt fals
  • 从 boto3 调用 AWS Glue Pythonshell 作业时出现参数错误

    基于上一篇文章 https stackoverflow com questions 58044032 retrieving s3 path from payload inside aws glue pythonshell job 58044
  • NodeJS 连接到 SQL Server getaddrinfo ENOTFOUNT

    我正在尝试使用 Knex js 连接到 Microsoft SQL Server 但收到 getaddrinfo ENOTFOUND 我知道这表明 NodeJS 无法解析地址 通常是通过 DNS 或协议问题 const knex requi
  • 离线世界卫星地图无标签(Android)

    我想在我的应用程序中包含 MapView 我已经尝试了一下 Google Api 它运行得很好 但现在我想要一张完全离线的地图 我知道有很多可能性可以做到这一点 问题是我想要一张没有任何标签的世界地图 例如国家名称 州名称 城市名称等 我只
  • 如何在我的 django 视图函数中从 Ajax POST 获取数据?

    document ready function addFolder input keydown function e if e keyCode 13 name this val ajax type POST url folder data
  • ie7 中的 JQuery Event.target 问题

    尝试从 event target 对象访问类名 适用于 FF Safari 和 Chrome InternetExplorer 7 警告 未定义 有什么建议么
  • Apache Poi:获取 DOC 文档中的页数

    如何使用 Apache Poi 获取 DOC 文档中的页数 我尝试使用以下代码 HWPFDocument wordDoc new HWPFDocument new FileInputStream lowerFilePath Integer
  • 我如何获得 NSDictionary/NSMutableDictionary 的原始顺序?

    我已经创建了带有 10 个键的 NSMutableDictionary 现在我想按照添加到 NSMutableDictionary 的顺序访问 NSMutableDictionary 键 使用 SetValue forKey 我怎样才能做到
  • 下载使用 MVC5 选择的多个文件

    我正在 MVC5 中开发一个视图 如下所示 我需要选择表中的一条或多条记录 并能够下载数据库中以前保存的文件 我一直在寻找解决方案并做了多次测试 但我找不到解决方案 我试图从 javascript 将选定的代码发送到控制器并从中下载文档 但
  • 在我的 angular-cli 项目中从 node-sass 切换到 dart sass

    我在 npm install 期间遇到了 node sass 做各种愚蠢的问题 包括但不限于 GNU c 编译一些东西 可能是它本身 尝试运行python2 7 尝试运行任何其他版本的 python 尝试连接到github 这在企业环境中造
  • XSD 属性 NILLABLE 不起作用

    我正在努力获取一个 xml 文件来根据 XSD 架构进行验证 但我在验证时遇到了问题 每次我验证时都会收到错误消息 架构有效性错误 元素 http services website com ProgramResponse Populatio
  • 如何根据当前位置设置正确的纬度和经度

    我的目标是使用 Google Places API 进行自动完成预测 现在我想制作某种算法 该算法将采用当前位置的纬度和经度 并仅对直径为 100 200 公里的地点进行预测 那么 此时我获取用户当前位置的纬度和经度 如何设置100 200
  • 龙目岛与休眠

    这可能吗 没有看到太多关于它的讨论 当然 根据我的经验 它效果很好 这是一个示例实体 Entity Cache usage CacheConcurrencyStrategy READ WRITE public class PingerEnt
  • 避免 JSF Web 应用程序上的后退按钮

    我正在显示非常敏感的数据 用户从我的服务器注销后 我不希望其他用户能够看到点击浏览器后退按钮的数据 我怎样才能实现这个目标 默认情况下 浏览器的后退按钮根本不会向服务器发送 HTTP 请求 相反 它从浏览器缓存中检索页面 这本质上是无害的
  • 如何显示信息窗口而不显示谷歌地图中标记的图标

    我可以只显示谷歌地图中的信息窗口吗 我正在使用 Google Map 的 V2 api 开发 Android 应用程序 我想在信息窗口中显示路线信息 但不想显示标记图标 那么信息窗口可以与标记分开吗 如果是这样 我怎样才能在隐藏标记的同时只
  • 在 $stateProvider.state 中分配多个控制器

    对于高级角度用户来说 这可能是一个简单的问题 但我没有在某个地方找到这个问题得到很好的解释 所以我正在重构我的代码 当我意识到一个视图中有两个控制器时 当控制器 ACtrl 由 stateProvider 绑定并且控制器 BCtrl 由 n
  • Redis 排序集和解决关系

    我正在使用 Redis 排序集来存储我正在处理的项目的排名 我们没有预料到 我们想要如何处理关系 Redis 按字典顺序对具有相同分数的条目进行排序 但我们想要做的是对具有相同分数的所有条目给予相同的排名 例如在以下情况 redis 127