系列导读:本篇将深入讲解 Redis 有序集合(ZSet)的所有操作命令及实际应用场景。
文章目录
-
- 一、有序集合命令总览
- 二、基础操作命令
-
- [2.1 添加与删除](#2.1 添加与删除)
- [2.2 分数操作](#2.2 分数操作)
- [2.3 统计操作](#2.3 统计操作)
- 三、范围查询命令
-
- [3.1 按排名查询](#3.1 按排名查询)
- [3.2 按分数查询](#3.2 按分数查询)
- [3.3 集合运算](#3.3 集合运算)
- 四、实战应用场景
-
- [4.1 排行榜](#4.1 排行榜)
- [4.2 延时队列](#4.2 延时队列)
- [4.3 热搜榜](#4.3 热搜榜)
- 总结
一、有序集合命令总览
| 命令 | 说明 |
|---|---|
| ZADD | 添加元素 |
| ZREM | 删除元素 |
| ZSCORE | 获取分数 |
| ZRANK | 获取排名 |
| ZRANGE | 按排名范围获取 |
| ZRANGEBYSCORE | 按分数范围获取 |
| ZCARD | 获取元素数量 |
| ZINCRBY | 增加分数 |
二、基础操作命令
2.1 添加与删除
bash
# 添加元素
ZADD leaderboard 100 "player1"
ZADD leaderboard 200 "player2" 150 "player3"
# 删除元素
ZREM leaderboard "player1"
# 删除排名范围
ZREMRANGEBYRANK leaderboard 0 9
# 删除分数范围
ZREMRANGEBYSCORE leaderboard 0 100
2.2 分数操作
bash
# 获取分数
ZSCORE leaderboard "player1"
# 增加分数
ZINCRBY leaderboard 50 "player1"
# 获取排名(从0开始)
ZRANK leaderboard "player1"
# 获取排名(倒序)
ZREVRANK leaderboard "player1"
2.3 统计操作
bash
# 获取元素数量
ZCARD leaderboard
# 统计分数范围内元素数量
ZCOUNT leaderboard 100 200
三、范围查询命令
3.1 按排名查询
bash
# 正序获取
ZRANGE leaderboard 0 9
ZRANGE leaderboard 0 9 WITHSCORES
# 倒序获取
ZREVRANGE leaderboard 0 9 WITHSCORES
3.2 按分数查询
bash
# 按分数范围获取
ZRANGEBYSCORE leaderboard 100 200
ZRANGEBYSCORE leaderboard 100 200 WITHSCORES
ZRANGEBYSCORE leaderboard (100 (200 # 不包含边界
# 倒序按分数获取
ZREVRANGEBYSCORE leaderboard 200 100
3.3 集合运算
bash
# 并集
ZUNIONSTORE result 2 zset1 zset2
# 交集
ZINTERSTORE result 2 zset1 zset2
四、实战应用场景
4.1 排行榜
bash
# 更新分数
ZINCRBY game:rank 100 "player1"
# 获取Top 10
ZREVRANGE game:rank 0 9 WITHSCORES
# 获取用户排名
ZREVRANK game:rank "player1"
4.2 延时队列
bash
# 添加延时任务(时间戳作为分数)
ZADD delay:queue 1712345678 "task:1"
# 获取到期任务
ZRANGEBYSCORE delay:queue 0 当前时间戳
4.3 热搜榜
bash
# 增加热度
ZINCRBY hot:search 1 "Redis教程"
# 获取热搜
ZREVRANGE hot:search 0 9 WITHSCORES
总结
本文我们学习了:
✅ 基础操作 :ZADD/ZREM/ZSCORE/ZRANK
✅ 范围查询 :ZRANGE/ZRANGEBYSCORE
✅ 应用场景:排行榜、延时队列、热搜榜
下篇预告 :Redis 从入门到精通(九):事务详解
作者 :刘~浪地球
系列 :Redis 从入门到精通(八)
更新时间:2026-04-05