news 2026/5/12 10:16:28

zset分页查询死循环问题

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
zset分页查询死循环问题

1.问题

当zset的score有较多相同值,通过ZREVRANGEBYSCORE等命令查询时,可能出现死循环,查询不完的情况。

2.解决方案

2.1 计算offset

每次查询完一页后,计算ZREVRANGEBYSCORE查询的最小值,判断和前一个值是否相等,

  1. 如果相等,继续计算,最多offset是本次的page_size,那么offset加上page_size;如果出现有重复的,可将page_size*2拉取。
  2. 如果不相等,说明分数目前没有重复,则offset默认为1,下次查询时会偏移一个返回,不会重复。

这种方式,offset越大复杂度越高,O(offset + limit)

2.2 构造唯一score

若使用时间戳作为分数,业务上同一时间戳有很多并发,那么说明该分数并不适合,可以构造唯一分数来解决:

score = 秒级ts *1e6 + count

2.3 两次查询

使用offset虽然简单,但性能可能会有所下降,可以分两次查询:

上一次查询结果:

(last_ts, last_member)

下次查询:

(ts < last_ts) OR (ts == last_ts AND member < last_member)

那么命令:

ZRANGEBYSCORE key last_ts last_ts // 查到所有分数相同的,当数量 n < page_size 时 ZREVRANGEBYSCORE key (last_ts -inf LIMIT 0 (page_size - n) // 再查询分数更小的

复杂度有点高,多了来回的网络开销。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/11 17:10:30

千亿参数开源突破:Ming-flash-omni Preview重构多模态AI技术范式

千亿参数开源突破&#xff1a;Ming-flash-omni Preview重构多模态AI技术范式 【免费下载链接】Ming-flash-omni-Preview 项目地址: https://ai.gitcode.com/hf_mirrors/inclusionAI/Ming-flash-omni-Preview 导语 Inclusion AI于2025年10月27日发布千亿参数开源全模态…

作者头像 李华
网站建设 2026/5/12 0:12:40

DOMPDF:企业级HTML转PDF解决方案终极指南

DOMPDF&#xff1a;企业级HTML转PDF解决方案终极指南 【免费下载链接】dompdf HTML to PDF converter for PHP 项目地址: https://gitcode.com/gh_mirrors/do/dompdf 在当今数字化转型浪潮中&#xff0c;企业文档处理需求日益复杂化&#xff0c;传统的PDF生成方案往往难…

作者头像 李华
网站建设 2026/5/9 0:47:17

5分钟快速验证:Docker离线安装原型方案

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个最小化的Docker离线安装验证原型&#xff0c;要求&#xff1a;1. 极简依赖(不超过5个核心包) 2. 单脚本完成安装 3. 基础功能验证 4. 快速回滚机制 5. 轻量级日志记录。用B…

作者头像 李华
网站建设 2026/5/9 2:11:16

企业级IDM集成模块的实际应用案例

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个企业级IDM集成模块&#xff0c;用于实现跨系统的单点登录(SSO)功能。模块需要支持SAML 2.0协议&#xff0c;与Active Directory集成&#xff0c;提供用户属性映射功能。使用…

作者头像 李华
网站建设 2026/5/11 3:51:15

终极指南:LOOT如何一键优化游戏模组加载顺序

终极指南&#xff1a;LOOT如何一键优化游戏模组加载顺序 【免费下载链接】loot A modding utility for Starfield and some Elder Scrolls and Fallout games. 项目地址: https://gitcode.com/gh_mirrors/lo/loot LOOT是一款专为《星空》、《上古卷轴》系列和《辐射》系…

作者头像 李华