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

相关推荐
IvorySQL39 分钟前
PostgreSQL 日报 | JOIN 与外键优化(8 月 9 日)
数据库·postgresql
ltl1 小时前
自治数据库十年回顾:Peloton、NoisePage、OtterTune 到云原生 auto-tuning
数据库
灯澜忆梦3 小时前
【MySQL10】进阶篇 | 索引_#2性能优化
数据库·sql·mysql·性能优化
C++ 老炮儿的技术栈4 小时前
从 Qt Designer 属性编辑器的层级可以看到继承链
c语言·数据库·c++·qt·sqlite·visual studio
MC皮蛋侠客4 小时前
Redis 系列(一):全景与最小闭环——从 `SET` 命令到内存数据结构
数据结构·数据库·redis
zt1985q6 小时前
本地部署开源网络书签与内容管理工具 Karakeep 并实现外部访问
运维·服务器·网络·数据库·网络协议·开源
IvorySQL7 小时前
PostgreSQL 日报| PostgreSQL 19 默认 WAL 压缩算法(8 月 8 日)
数据库·postgresql·区块链
油丶酸萝卜别吃7 小时前
MySQL B+ 树查询全过程详解
数据库·mysql
leisoo80977 小时前
股票数据本地化存储实战:JSON、数据库与列式存储的方案对比
jvm·数据库·json
Exclusive_Cat7 小时前
MySQL回表机制解析与优化策略
数据库·sql