Redis中基于多个条件的有序集合

5

我正在尝试创建一个Redis有序集合。但问题在于,排序需要基于两个标准:时间戳和分值。而在Redis中,我只能提供一种排序标准:

ZADD {key} {timestamp} {value}

请问如何在这个排序中添加评分呢?

更新:我采用了以下方法将两种不同的排序方式合并成一个浮点型得分值:

var score = Math.floor(result.created_time/(60*60*24*1000));
score = score + (result.matches/10);

仅作解释,我首先将时间戳转换为天数。我的'matches'值通常在0-10之间。因此,将其转换为十进制值并作为分数权重添加。这使得我能够获得按天排序的最高分记录。这正是我所需要的。

1个回答

4

在你的Sorted Set中使用小数作为分数 - 使用时间戳作为小数点左侧的值,右侧的值作为小数点右侧的值来构建分数。


谢谢你的提示。这对我制定一个通用分数有所帮助。我正在更新我的问题,说明我采取的方法。 - Rana
非常酷 :) 顺便说一下,这个技巧在我看来绝对是Redis中最简单、最有效、最常被忽视的技巧之一。 - Itamar Haber

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接