Sorting Redis基于分数和日期时间排序集是否为平局破坏者?
我想使用redis的排序集作为引导板。但是使用Sorting Redis基于分数和日期时间排序集是否为平局破坏者?,sorting,optimization,lua,redis,sortedset,Sorting,Optimization,Lua,Redis,Sortedset,我想使用redis的排序集作为引导板。但是使用ZREVRANGE 0 x,我只能从分数(基于分数的升序排序集的末尾)中获得前x,默认的平局断路器是,从官方redis文档中: 字典顺序用于等分元素 我需要的平局打破者是分数输入的日期和时间 e、 g 我看到的唯一解决方案是在条目上存储上次更新的日期和时间,但仍然使用ZREVRANGE键0 x从前x个用户获得最大和最小分数。然后执行ZREVRANGEBYSCORE键max-min。如果结果长度大于x,则至少有一个tie,因此我将使用2个键在Lua中对
ZREVRANGE 0 x
,我只能从分数(基于分数的升序排序集的末尾)中获得前x,默认的平局断路器是,从官方redis文档中:
字典顺序用于等分元素
我需要的平局打破者是分数输入的日期和时间
e、 g
我看到的唯一解决方案是在条目上存储上次更新的日期和时间,但仍然使用ZREVRANGE键0 x
从前x个用户获得最大和最小分数。然后执行ZREVRANGEBYSCORE键max-min
。如果结果长度大于x,则至少有一个tie,因此我将使用2个键在Lua中对较小的列表进行排序
这个方法看起来很慢,我需要让它为成千上万的用户工作。我不喜欢Lua的2个调用和处理(在redis端,保持原子性),我想知道是否有更好的方法使用2个键进行排序集或配置另一个平局断路器
我的代码已编写,因此无法更改数据库类型。如果你有什么有趣的想法,我很想听听,因为我不是redis的专家。排序集分数是一个浮点值。你的分数和分数的日期时间都可以符合这个条件
submits (in order) redis sorts it as I need
User1 -- Score 50 User1 User1
User3 -- Score 40 User2 User3
User2 -- Score 40 User3 User2