我有以下问题。
我现在有一个redis数据库,里面有很多密钥,>100k。我想在服务器端分页。
我的研究表明:
我的当前存储基于key->value。你不能在不增加太多复杂性的情况下根据我的研究对键/值进行分页,所以我会放弃这个选项,尽管这是最简单的方法,因为我已经用这种方法存储了所有的数据。否则如果不可能,我只想 keys *
,我可以得到所有的键,然后进行查询以分别读取每个键。但我不知道这是不是最好的办法
将键值存储迁移到排序集并使用zrange。但是。。。数据会稳定吗?我的意思是,任何事情都可能发生,一些新的键被添加,然后就没有意义了,例如,在切换页面时,它会丢失行。我说得对吗?无论如何,在本例中,我考虑使用zcount获取整个长度,然后使用zrange检索分页数据。
我还能做什么?或者你会怎么做?
1条答案
按热度按时间d7v8vwbk1#
您可以将数据保存为键值对,并使用排序计数器来记录插入的每个键的顺序,即使用单调递增的计数器作为排序集的分数。因此,新添加的键将始终放在末尾。将逻辑 Package 到lua脚本中:
那你可以用
ZRANGE
要进行分页:ZRANGE pagination 0 10