redis zset 命令
时间: 2025-04-21 17:38:37 浏览: 35
### Redis ZSet 命令详解
#### 1. 添加元素到有序集合 (ZADD)
`ZADD key score member [score member ...]`
此命令用于向给定键对应的有序集中添加一个或多个成员,或者更新已存在成员的分数。如果某个成员已经存在于该有序集中,则会更新其分数。
```bash
127.0.0.1:6379> ZADD myzset 1 "one"
(integer) 1
```
上述例子创建了一个名为 `myzset` 的有序集合并插入了带有分数 `1` 和值 `"one"` 的成员[^1].
#### 2. 获取有序集合中的成员数 (ZCARD)
`ZCARD key`
返回存储在指定键下的有序集合里的成员总数。
```bash
127.0.0.1:6379> ZCARD myzset
(integer) 1
```
这段代码展示了如何查询之前定义好的 `myzset` 中有多少个元素.
#### 3. 计算特定分数组内的成员数目 (ZCOUNT)
`ZCOUNT key min max`
统计位于最小(`min`)和最大(`max`)之间的成员数量(包括边界),其中可以使用 `-inf` 表示负无穷大而 `+inf` 则代表正无穷大。
```bash
127.0.0.1:6379> ZCOUNT score 80 90
(integer) 2
```
这里说明了当有一个叫作 `score` 的有序集合时,可以通过这条指令得知得分为 `80~90` 范围内的人数是多少[^2].
#### 4. 返回按升序排列后的全部/部分成员及其得分 (ZRANGE/ZRANGEBYSCORE)
- **ZRANGE**: `ZRANGE key start stop [WITHSCORES]`
提取从索引位置 `start` 至 `stop` 的所有条目;可选参数 `WITHSCORES` 将连同它们各自的评分一起返回。
- **ZRANGEBYSCORE**: `ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]`
根据分数范围获取数据项,并允许进一步通过 `LIMIT` 子句限制结果的数量以及起始偏移量。
```bash
# 使用 ZRANGE 并带上 WITHSCORES 参数显示成员及对应分数
127.0.0.1:6379> ZRANGE myzset 0 -1 WITHSCORES
1) "one"
2) "1"
# 或者按照分数区间检索记录
127.0.0.1:6379> ZRANGEBYSCORE myscoreset 5 10 WITHSCORES LIMIT 0 2
...
```
这些命令可以帮助用户轻松地访问有序集合中排序过的项目列表^.
#### 5. 删除指定排名区间的成员 (ZREMRANGEBYRANK)
`ZREMRANGEBYRANK key start stop`
删除处于由低至高第 `start` 名次到第 `stop` 名次之间(含两端)的所有成员。
```bash
127.0.0.1:6379> ZREMRANGEBYRANK leaderboard 0 10
(integer) 11
```
这行脚本表示清除了排行榜上前十一名的数据.
#### 6. 移除具有相同分数的最大/最小成员 (ZPOPMAX / ZPOPMIN)
- **ZPOPMAX**: `ZPOPMAX key [count]`
找出并移走拥有最高分数的一个或多于一个成员。
- **ZPOPMIN**: `ZPOPMIN key [count]`
类似地作用于最低分数端。
```bash
# 弹出单个最高分成员
127.0.0.1:6379> ZPOPMAX scores
1) "highest_scored_item"
2) "its_score_value"
# 同样适用于弹出多份最低分作品
127.0.0.1:6379> ZPOPMIN items 3
...
```
以上两条语句分别演示了怎样高效处理极端情况下的数据点.
#### 应用实例:任务调度系统
为了构建基于时间戳的任务队列,可以选择利用 Sorted Sets 结构来管理待办事项:
- 把计划执行的时间作为 Score;
- Task ID 设为 Member Value;
- 当到达设定时刻即刻取出相应的 task 进行下一步动作。
例如,在实际应用当中可能会像下面这样操作:
```bash
# 插入新任务
127.0.0.1:6379> ZADD tasks 1672531200 "task_id_1"
# 查询即将到期的任务们
127.0.0.1:6379> ZRANGEBYSCORE tasks "-inf" "+inf" WITHSCORES LIMIT 0 10
...
```
这种设计模式非常适合用来安排周期性的后台作业或是定时触发某些事件的发生[^4].
阅读全文
相关推荐


















