gpt4 book ai didi

redis - 在Redis中查找特定数字的上限或下限

转载 作者:可可西里 更新时间:2023-11-01 11:48:04 26 4
gpt4 key购买 nike

比如我在Redis中有一个集合

5 7 11 15 19 2 1

我想在 Redis 中找到 12 的上限或下限。在这个例子中它们是 1511

我怎样才能有效地做到这一点。

我可以使用 setordered set

谢谢!

最佳答案

我可以想到两种方法,但都不是完美的。

如果它们都在 set 中, 您可以检查 ( $r->sIsMember() ) 该号码 12然后反复上下移动,直到找到每个匹配项。这不太好,我建议使用 LUA避免大量脚本 back-and-forth如果你走那条路。

其次,将它们放在 sorted set 中作为各种主键的分数。那你会zRangeByScore()并得到 zRank()排序集中的那个成员,然后是 zRange()获得之前和之后的值(value)。我会在这里这样做:

将它们添加到有序集合中:

zadd mysset 5 "one"
zadd mysset 7 "two"
zadd mysset 11 "three"
zadd mysset 15 "four"
zadd mysset 19 "five"
zadd mysset 2 "six"
zadd mysset 1 "seven"

即时添加一个以供引用

zadd mysset 12 "center"

现在得到 reference 的等级:

zRank mysset "center"    
// 6 in this case

现在得到上下一个的范围withscores :

zRange mysset 7 7 WITHSCORES
zRange mysset 5 5 WITHSCORES
// "four" 15
// "three" 11

祝你好运,玩得开心!

编辑:哦,是的,删除引用号:

zrem mysset "center"

关于redis - 在Redis中查找特定数字的上限或下限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48163951/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com