Redis 的 zset 按 score 排序做分页的时候怎么保证数据不丢失?

2023-06-26 23:26:13 +08:00
 ben548
因为 zset 中可以存在 score 相同的数据,按 score 来查询下一页时,怎么保证下一页相同的 score 数据不丢失呢?
1867 次点击
所在节点    Redis
9 条回复
SorcererXW
2023-06-27 02:45:04 +08:00
- 最好的办法是保证 score 不重复,score 范围这么大,计算 score 的时候多引入一些字段让 score 不冲突即可

- 如果 score 肯定有相同的:每一次查询后,把最后那个 score 的所有项目,生成一个 bloom filter ,存下来或者透传。在查询下一页的时候,把对应的 score 的数据全拉出来,做一层过滤。
GTim
2023-06-27 07:46:17 +08:00
score 是 float64 吧,你把平时的 score + 左边补 0 的 id
guxingke
2023-06-27 10:23:10 +08:00
全查 业务内存排序 sort by score , id
ben548
2023-06-27 11:32:26 +08:00
@SorcererXW 好麻烦
ben548
2023-06-27 11:33:09 +08:00
@guxingke ?你这个是数据库的 order by 吧,redis 不能这么干
Dlin
2023-06-27 14:07:49 +08:00
我寻思着,也没有啥丢失啊,zrange key minScore maxScore byscore limit offset count
Dlin
2023-06-27 14:09:18 +08:00
@Dlin The order of elements is from the lowest to the highest score. Elements with the same score are ordered lexicographically.
Dlin
2023-06-27 14:14:23 +08:00
@Dlin 好吧,limit 是 6.2 增加的参数
Dlin
2023-06-27 14:21:24 +08:00
可是 ZRANGEBYSCORE 也应该不会有什么问题吧?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/951909

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX