news 2026/4/15 12:10:02

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/3/31 23:57:54

快速验证创意:用Docker+MinIO构建原型存储系统的5种场景

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 为以下5个场景生成快速原型方案&#xff1a;1. 图片托管服务&#xff1b;2. 日志存储系统&#xff1b;3. 机器学习数据集管理&#xff1b;4. 备份解决方案&#xff1b;5. 静态网站托…

作者头像 李华
网站建设 2026/4/12 20:17:36

Blazor原型开发:1小时验证你的产品创意

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 快速生成一个电商平台原型&#xff0c;包含产品列表页、详情页和购物车。列表页需要分类筛选和搜索&#xff1b;详情页要有图片轮播、规格选择和加入购物车按钮&#xff1b;购物车显…

作者头像 李华
网站建设 2026/4/1 6:19:12

图解Java volatile:小白也能懂的线程安全入门

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个交互式学习页面&#xff0c;包含&#xff1a;1.咖啡店比喻讲解内存可见性 2.可调节速度的线程执行动画 3.实时修改volatile标记的沙盒环境 4.常见误区选择题。要求使用简单…

作者头像 李华
网站建设 2026/4/13 14:56:11

实战:用#include <stdio.h>构建一个简单的文件读写工具

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 生成一个C语言程序&#xff0c;使用#include <stdio.h>实现文件读写功能。程序应包含以下功能&#xff1a;1. 创建一个新文件并写入用户输入的内容&#xff1b;2. 读取文件内…

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

CSS小白必学:5分钟掌握文字省略技巧

快速体验 打开 InsCode(快马)平台 https://www.inscode.net输入框内输入如下内容&#xff1a; 创建一个面向初学者的CSS教程代码示例&#xff0c;分步骤演示如何实现文字超出隐藏显示省略号&#xff1a;1) 最基本的单行文本省略 2) 添加边框和背景色以便观察效果 3) 多行文本省…

作者头像 李华
网站建设 2026/4/12 16:04:35

TockOS基于能力的安全架构深度解析

TockOS基于能力的安全架构深度解析 【免费下载链接】tock 项目地址: https://gitcode.com/gh_mirrors/toc/tock 在嵌入式系统开发中&#xff0c;内存安全和系统隔离一直是核心挑战。TockOS通过Rust语言特性和创新的能力(capability)机制&#xff0c;为嵌入式设备提供了…

作者头像 李华