【发布时间】:2020-07-04 20:11:06
【问题描述】:
我对 Redis 很陌生,最初使用 KEYS 来遍历我的数据集,但从我在文档 Redis worst practices 中可以看到的内容来看,实际上不建议这样做 - 特别是在包含许多键的较大数据集中,因为 KEYS 遍历整个数据集,阻塞 long 时间,而 SCAN 迭代数据集中的数据块,因此阻塞时间比 KEYS 短 。 如果理解正确,我想知道是否有任何方法可以优化 SCAN 迭代,这样它就不会随机迭代(比如说)10.000 个数据,而是从给定点迭代。 p>
例子:
a1
a2
a3
b1 < --- start iterating from here instead of from a1
b2
b3
这样可以为“我们”节省很多性能?
【问题讨论】:
-
你需要重新思考一下才能解决这个问题。与其扫描自然键,不如对键使用无意义的随机或顺序值。为了进行智能查找,您应该使用字典排序集,其作用类似于关系数据库中的 btree 索引。您的自然键应该成为这些索引中的值,并在末尾附加 id。如果您非常仔细地阅读this article,尤其是。从“在索引中添加辅助信息”部分,它将变得具有启发性,只要相信它解决了您的用例即可。
标签: database sorting redis key