小编典典

Redis:排序并获取n个邻居键

redis

假设我在Redis中有这些对:

1237.56 "John"
1224.59 "Robert"
1213.34 "Mahmoud"
1242.90 "George"
1020.11 "Mary"
1723.09 "Jay"
1589.77 "Khan"
1106.62 "Albert"

键始终是十进制数字。当提供一个数字时,我想在两个方向上获得最接近数字的两个键。

例如,如果我搜索的邻居1242,则结果集应具有:

1224.59 "Robert"
1237.56 "John"
1242.90 "George"
1589.77 "Khan"

这可能吗?我还是Redis的新手,感谢您的帮助。


阅读 303

收藏
2020-06-20

共1个答案

小编典典

是和不是同一时间。

为什么是? 唯一的redis数据类型-SORTED SET允许您获取基于十进制的值范围。因此,使用ZRANGEBYSCORE,您可以按分数范围获取值。

ZRANGEBYSCORE theKey 1220 1600

为您提供所需的数据集。

为什么不呢?
在您的问题中,您会问得分高的邻居。ZRANGEBYSCORE可以获取从最小分数到最大分数的值,但不能“获得小于给定值的X值”或“大于给定值的X值”。

2020-06-20