Redis 从入门到精通(八):有序集合操作详解

系列导读:本篇将深入讲解 Redis 有序集合(ZSet)的所有操作命令及实际应用场景。


文章目录


一、有序集合命令总览

命令 说明
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

相关推荐
fe7tQnVan2 小时前
MyBatis-动态sql与高级映射
数据库·sql·mybatis
计算机安禾2 小时前
【数据结构与算法】第28篇:平衡二叉树(AVL树)
开发语言·数据结构·数据库·线性代数·算法·矩阵·visual studio
DYuW5gBmH3 小时前
Chrome DevTools MCP 让 AI 无缝接管浏览器调试会话
前端·chrome·chrome devtools
道清茗3 小时前
【MySQL知识点问答题】高级复制技术
数据库·mysql
IT邦德4 小时前
Oracle备份恢复概览
数据库·oracle
User_芊芊君子4 小时前
别再乱用 ArrayList 了!这 4 个隐藏坑,90% 的 Java 开发者都踩过
android·java·数据库
xcLeigh4 小时前
IoTDB Java 原生 API 实战:SessionPool 从入门到精通
java·开发语言·数据库·api·iotdb·sessionpool
必胜刻4 小时前
Redis分布式锁讲解
数据库·redis·分布式
gjc5924 小时前
零基础OceanBase数据库入门(6):连接OB集群
数据库·oceanbase