*Redis ZRANGEBYSCORE 命令
返回 Sorted Set 中 score 在指定范围内的成员,按 score 从小到大排序。
*语法
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]
*参数说明
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| key | String | 是 | Sorted Set 的键名 |
| min | Double/String | 是 | 最小 score,-inf 表示负无穷;( 表示不包含边界 |
| max | Double/String | 是 | 最大 score,+inf 表示正无穷;( 表示不包含边界 |
| WITHSCORES | 标志 | 否 | 同时返回 score |
| LIMIT | Integer | 否 | offset 和 count,分页用 |
*返回值
| 条件 | 返回值 |
|---|---|
| 有匹配 | 成员数组 |
| 无匹配/key 不存在 | 空数组 [] |
*时间复杂度
O(log(N)+M),N 为成员数量,M 为返回数量。
*示例
> ZADD leaderboard 100 "p1" 200 "p2" 300 "p3" 400 "p4"
(integer) 4
# score 100-300(包含边界)
> ZRANGEBYSCORE leaderboard 100 300
1) "p1"
2) "p2"
3) "p3"
# 不包含 100
> ZRANGEBYSCORE leaderboard (100 300
1) "p2"
2) "p3"
# 无穷范围
> ZRANGEBYSCORE leaderboard 250 +inf
1) "p3"
2) "p4"
# 分页
> ZRANGEBYSCORE leaderboard 100 400 LIMIT 1 2
1) "p2"
2) "p3"
*常见错误
- Redis 6.2+ 推荐使用 ZRANGE BYSCORE:ZRANGEBYSCORE 已废弃。
*最佳实践
- 时间范围查询:score 为时间戳时,ZRANGEBYSCORE 查询时间段数据。
- Redis 6.2+ 统一用 ZRANGE:
ZRANGE key min max BYSCORE替代。
*FAQ
Q: ZRANGEBYSCORE 和 ZRANGE BYSCORE 有什么区别?
A: 效果相同。ZRANGEBYSCORE 是旧命令,6.2+ 推荐 ZRANGE ... BYSCORE。
Q: (min 是什么意思?
A: 圆括号表示不包含边界。(100 300 表示 score > 100 且 <= 300。