您可以使用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
Run Code Online (Sandbox Code Playgroud)
结果:
1) "one"
2) "two"
3) "three"
Run Code Online (Sandbox Code Playgroud)
也是为了得分大于4
ZRANGEBYSCORE myset 4 +inf
Run Code Online (Sandbox Code Playgroud)
结果:
1) "five"
2) "six"
Run Code Online (Sandbox Code Playgroud)
关于复杂性,由于redis文档,它是O(log(N)+ M)
编辑:第二个例子
假设我们有一个在线游戏的记分牌,我们将其存储在redis的有序集中.以下命令创建此测试
zadd scoreboard 101 "John" 333 "Mary" 323 "Nick" 900 "Steve" 901 "Sam" 333 "Mike"
Run Code Online (Sandbox Code Playgroud)
有资格进入下一轮的球员是得分低于330的球员.要找到这些球员,我们运行以下命令.
ZRANGEBYSCORE scoreboard -inf 330
Run Code Online (Sandbox Code Playgroud)
这将导致2名球员(约翰和尼克)
1) "John"
2) "Nick"
Run Code Online (Sandbox Code Playgroud)
为了进一步解释这个命令:ZRANGEBYSCORE:redis命令,检查文档记分板:我创建的排序集-inf:是我命令330的最低价格:我的命令的最高价格
它的作用是找到从-infinite到330的所有成员,我理解为330及以下的所有成员.
我希望我帮助:)
| 归档时间: |
|
| 查看次数: |
2238 次 |
| 最近记录: |