news 2026/8/28 7:31:21

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/26 17:02:51

零基础入门:用Cursor免费版写出你的第一行代码

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 为完全零基础用户设计一个Cursor免费版入门教程。要求生成&#xff1a;1) 安装和基础配置指南 2) 界面导览说明 3) 创建第一个Python打印Hello World的步骤 4) 简单HTML页面制作教学…

作者头像 李华
网站建设 2026/8/28 0:49:36

零基础入门:用大模型开启AI学习之旅

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 开发一个面向AI初学者的引导式学习应用&#xff0c;功能包括&#xff1a;1) 交互式基础知识问答 2) 渐进式实践项目&#xff08;从简单到复杂&#xff09;3) 术语解释器&#xff08…

作者头像 李华
网站建设 2026/8/27 17:49:56

零基础图解MinGW安装:小学生都能看懂

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个面向新手的MinGW安装辅助工具&#xff0c;要求&#xff1a;1. 图形化界面&#xff08;Tkinter&#xff09; 2. 分步骤引导安装 3. 实时检测常见错误 4. 内置修复功能 5. 生…

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

对比评测:5种Ubuntu中文输入法的输入效率差异

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个输入法测试工具&#xff0c;能自动执行以下测试&#xff1a;1) 常用词输入速度测试 2) 长句连贯性测试 3) 专业术语识别率 4) 内存/CPU占用监测。要求生成可视化对比报告&a…

作者头像 李华
网站建设 2026/8/27 9:48:19

Bosque语言:正则化编程范式的技术革命

Bosque语言&#xff1a;正则化编程范式的技术革命 【免费下载链接】BosqueLanguage The Bosque programming language is an experiment in regularized design for a machine assisted rapid and reliable software development lifecycle. 项目地址: https://gitcode.com/…

作者头像 李华
网站建设 2026/8/27 12:35:53

腾讯开源Hunyuan-7B-Instruct-AWQ-Int4:重塑大模型多场景部署范式

导语 【免费下载链接】Hunyuan-7B-Instruct-AWQ-Int4 腾讯开源Hunyuan-7B-Instruct-AWQ-Int4大语言模型&#xff0c;支持快慢思维推理&#xff0c;原生256K超长上下文&#xff0c;优化Agent任务性能。采用GQA和量化技术实现高效推理&#xff0c;兼顾边缘设备与高并发系统部署需…

作者头像 李华