# Sorted Set（有序集合）

URL: https://caijiao.org/redis/03-data-structures/05-sorted-set
Source: docs/redis/03-data-structures/05-sorted-set.md
Description: Redis 的 Sorted Set（有序集合）是一种带有分数的唯一元素集合，支持按分数排序，常用于排行榜、带权重的任务调度和范围查询等场景。

Sorted Set 是 Redis 提供的一种带分数（score）的集合，集合中的每个元素都是唯一的字符串，且与一个双精度浮点数分数相关联。集合根据分数从小到大自动排序。

## 基本操作

- **ZADD**：向有序集合添加元素及其分数

```bash
ZADD key score member [score member ...]
````

* **ZREM**：移除一个或多个成员

```bash
ZREM key member [member ...]
```

* **ZRANGE**：按排名区间返回成员（从低分到高分）

```bash
ZRANGE key start stop [WITHSCORES]
```

* **ZREVRANGE**：按排名区间返回成员（从高分到低分）

```bash
ZREVRANGE key start stop [WITHSCORES]
```

* **ZSCORE**：返回成员的分数

```bash
ZSCORE key member
```

## 进阶操作

* **ZINCRBY**：增加成员的分数

```bash
ZINCRBY key increment member
```

* **ZRANK**：返回成员的排名（从低分到高分）

```bash
ZRANK key member
```

* **ZREVRANK**：返回成员的排名（从高分到低分）

```bash
ZREVRANK key member
```

* **ZCOUNT**：统计指定分数范围内的成员数量

```bash
ZCOUNT key min max
```
  
* **ZREMRangeByRank**：删除指定排名区间的成员

```bash
ZREMRANGEBYRANK key start stop
```

* **ZREMRangeByScore**：删除指定分数区间的成员

```bash
ZREMRANGEBYSCORE key min max
```

## 应用场景

Sorted Set 非常适合实现排行榜、带权重的任务调度、按时间排序的消息流和范围查询等需求。它结合了集合的唯一性和有序排列的优势。
