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

相关推荐
m0_6245785915 小时前
MySQL主从复制支持跨版本吗_不同版本间同步的注意事项
jvm·数据库·python
2401_8714928515 小时前
如何在 React Router v6 中正确配置多路由组件显示
jvm·数据库·python
Fᴏʀ ʏ꯭ᴏ꯭ᴜ꯭.16 小时前
《redis-cluster 集群部署完全手册(含扩容+缩容)》
数据库·redis·缓存
snow@li16 小时前
数据库-MongoDB:常用语法 / MongoDB 核心知识技能梳理
数据库·mongodb
0xDevNull16 小时前
Java项目中Redis热点Key自动检测方案详细教程
java·spring boot·redis
想躺平的小羊16 小时前
关于金额在数据库设置类型问题
数据库
zhangchaoxies17 小时前
MySQL触发器能否监控特定用户操作_结合审计功能实现分析
jvm·数据库·python
chushiyunen17 小时前
faiss向量检索库(并非向量数据库)
数据库·faiss
qq_4135020217 小时前
如何解决ORA-12518监听程序无法分配进程_内存耗尽与PGA溢出
jvm·数据库·python
Mr_pyx17 小时前
Java 注解(Annotation)详解:从基础到 APT 实战
java·数据库·sqlserver