在 Redis 中,如何获取分数小于 x 的所有成员?执行该任务的时间复杂度是多少?
问问题
2981 次
1 回答
11
您可以使用ZRANGEBYSCORE redis 命令。
例如分数小于4的成员
zadd myset 1 "one"
zadd myset 2 "two"
zadd myset 3 "three"
zadd myset 5 "five"
zadd myset 6 "six"
ZRANGEBYSCORE myset -inf 4
结果:
1) "one"
2) "two"
3) "three"
也适用于分数大于 4
ZRANGEBYSCORE myset 4 +inf
结果:
1) "five"
2) "six"
关于复杂性,由于 redis 文档,它是 O(log(N)+M)
编辑:第二个例子
假设我们有一个在线游戏的记分牌,我们将它存储在 redis 中的一个排序集中。以下命令创建此测试
zadd scoreboard 101 "John" 333 "Mary" 323 "Nick" 900 "Steve" 901 "Sam" 333 "Mike"
有资格进入下一轮的玩家是得分低于 330 的玩家。要找到这些玩家,我们运行以下命令。
ZRANGEBYSCORE scoreboard -inf 330
这将导致 2 名玩家(约翰和尼克)
1) "John"
2) "Nick"
为了进一步解释这个命令: ZRANGEBYSCORE:redis 命令,检查文档记分牌:我创建的排序集 -inf:是我的命令的最低价格 330:我的命令的最高价格
它的作用是找到从-infinite到330这个范围内的所有成员,我理解为330及以下的所有成员。
我希望我有所帮助:)
于 2012-11-27T13:49:02.880 回答