news 2026/8/22 0:12:04

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/8/22 0:10:47

传统排错 vs AI辅助:连接问题解决效率对比

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个效率对比测试平台&#xff1a;1. 设置10种常见的连接被拒绝场景 2. 开发传统排错手册(基于文档的逐步检查) 3. 实现AI辅助诊断模块 4. 设计自动化测试流程 5. 收集并可视化…

作者头像 李华
网站建设 2026/8/22 0:10:37

1分钟搞定!比传统方法快10倍的开机时间查询技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个轻量级桌面应用&#xff0c;显示电脑的实时开机时间和运行时长。应用应具有简洁的UI界面&#xff0c;支持一键复制开机时间信息&#xff0c;并能在系统托盘中运行。使用Pyt…

作者头像 李华
网站建设 2026/8/21 22:18:12

用Qwen Agent 1小时打造产品原型:实战演示

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个原型生成器&#xff0c;用户输入产品想法&#xff08;如健身社交APP&#xff09;&#xff0c;Qwen Agent自动生成&#xff1a;1. 核心功能列表 2. 数据库Schema 3. 主要界面…

作者头像 李华
网站建设 2026/8/20 14:21:12

DeepSeek本地部署:AI如何优化你的开发环境配置

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个DeepSeek本地部署硬件配置优化工具&#xff0c;能够自动分析当前开发项目的计算需求&#xff08;如CPU、GPU、内存等&#xff09;&#xff0c;基于DeepSeek模型推荐最优硬件…

作者头像 李华
网站建设 2026/8/20 10:10:15

c#教程开发效率提升秘籍

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 构建一个c#教程应用&#xff0c;重点展示快速开发流程和效率优势。点击项目生成按钮&#xff0c;等待项目生成完整后预览效果 作为一名C#开发者&#xff0c;我一直在寻找提升开发效…

作者头像 李华
网站建设 2026/8/22 0:09:46

如何快速配置硬件信息修改工具:新手完全指南

如何快速配置硬件信息修改工具&#xff1a;新手完全指南 【免费下载链接】EASY-HWID-SPOOFER 基于内核模式的硬件信息欺骗工具 项目地址: https://gitcode.com/gh_mirrors/ea/EASY-HWID-SPOOFER 硬件信息修改工具 EASY-HWID-SPOOFER 是一款基于内核模式的强大工具&#…

作者头像 李华