Redis(16)Redis的有序集合(Sorted Set)类型有哪些常用命令?

Redis 的有序集合(Sorted Set)类型是一个带有分数的无序集合,分数用于排序。每个元素都是唯一的,但分数可以重复。Sorted Set 类型支持一系列常用命令,下面详细介绍这些命令,并结合代码示例进行展示。

1. ZADD - 向有序集合添加一个或多个成员,并设置分数

ZADD 命令用于向有序集合添加一个或多个成员,并设置分数。如果成员已存在,则更新其分数。

bash 复制代码
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]

示例:

bash 复制代码
ZADD myzset 1 "one"
ZADD myzset 2 "two"

2. ZREM - 移除有序集合中的一个或多个成员

ZREM 命令用于移除有序集合中的一个或多个成员。

bash 复制代码
ZREM key member [member ...]

示例:

bash 复制代码
ZREM myzset "two"

3. ZSCORE - 获取有序集合中成员的分数

ZSCORE 命令用于获取有序集合中成员的分数。

bash 复制代码
ZSCORE key member

示例:

bash 复制代码
ZSCORE myzset "one"

4. ZRANK - 获取有序集合中成员的排名(按分数从低到高)

ZRANK 命令用于获取有序集合中成员的排名(按分数从低到高),排名从 0 开始。

bash 复制代码
ZRANK key member

示例:

bash 复制代码
ZRANK myzset "one"

5. ZREVRANK - 获取有序集合中成员的排名(按分数从高到低)

ZREVRANK 命令用于获取有序集合中成员的排名(按分数从高到低),排名从 0 开始。

bash 复制代码
ZREVRANK key member

示例:

bash 复制代码
ZREVRANK myzset "one"

6. ZRANGE - 按排名范围获取有序集合中的成员(从低到高)

ZRANGE 命令用于按排名范围获取有序集合中的成员(从低到高)。

bash 复制代码
ZRANGE key start stop [WITHSCORES]

示例:

bash 复制代码
ZRANGE myzset 0 -1  # 获取所有成员
ZRANGE myzset 0 -1 WITHSCORES  # 获取所有成员及其分数

7. ZREVRANGE - 按排名范围获取有序集合中的成员(从高到低)

ZREVRANGE 命令用于按排名范围获取有序集合中的成员(从高到低)。

bash 复制代码
ZREVRANGE key start stop [WITHSCORES]

示例:

bash 复制代码
ZREVRANGE myzset 0 -1  # 获取所有成员
ZREVRANGE myzset 0 -1 WITHSCORES  # 获取所有成员及其分数

8. ZRANGEBYSCORE - 按分数范围获取有序集合中的成员

ZRANGEBYSCORE 命令用于按分数范围获取有序集合中的成员。

bash 复制代码
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

示例:

bash 复制代码
ZRANGEBYSCORE myzset 0 2  # 获取分数在0到2之间的成员
ZRANGEBYSCORE myzset 0 2 WITHSCORES  # 获取分数在0到2之间的成员及其分数
ZRANGEBYSCORE myzset 0 2 LIMIT 0 1  # 获取分数在0到2之间的第一个成员

9. ZREVRANGEBYSCORE - 按分数范围倒序获取有序集合中的成员

ZREVRANGEBYSCORE 命令用于按分数范围倒序获取有序集合中的成员。

bash 复制代码
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]

示例:

bash 复制代码
ZREVRANGEBYSCORE myzset 2 0  # 获取分数在2到0之间的成员
ZREVRANGEBYSCORE myzset 2 0 WITHSCORES  # 获取分数在2到0之间的成员及其分数
ZREVRANGEBYSCORE myzset 2 0 LIMIT 0 1  # 获取分数在2到0之间的第一个成员

10. ZREM - 移除有序集合中的一个或多个成员

ZREM 命令用于移除有序集合中的一个或多个成员。

bash 复制代码
ZREM key member [member ...]

示例:

bash 复制代码
ZREM myzset "one"

11. ZREMRANGEBYRANK - 移除有序集合中指定排名范围的成员

ZREMRANGEBYRANK 命令用于移除有序集合中指定排名范围的成员。

bash 复制代码
ZREMRANGEBYRANK key start stop

示例:

bash 复制代码
ZREMRANGEBYRANK myzset 0 1  # 移除排名在0到1之间的成员

12. ZREMRANGEBYSCORE - 移除有序集合中指定分数范围的成员

ZREMRANGEBYSCORE 命令用于移除有序集合中指定分数范围的成员。

bash 复制代码
ZREMRANGEBYSCORE key min max

示例:

bash 复制代码
ZREMRANGEBYSCORE myzset 0 1  # 移除分数在0到1之间的成员

13. ZINCRBY - 增加有序集合中某个成员的分数

ZINCRBY 命令用于增加有序集合中某个成员的分数。

bash 复制代码
ZINCRBY key increment member

示例:

bash 复制代码
ZINCRBY myzset 2 "one"  # 增加 "one" 的分数2

14. ZINTERSTORE - 计算给定的一个或多个有序集的交集, 并将其储存到新的集合中

ZINTERSTORE 命令用于计算给定的一个或多个有序集的交集,并将其储存到新的集合中。

bash 复制代码
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

示例:

bash 复制代码
ZADD zset1 1 "one"
ZADD zset1 2 "two"
ZADD zset2 1 "one"
ZADD zset2 2 "two"
ZINTERSTORE out 2 zset1 zset2
ZRANGE out 0 -1 WITHSCORES

15. ZUNIONSTORE - 计算给定的一个或多个有序集的并集,并将其储存到新的集合中

ZUNIONSTORE 命令用于计算给定的一个或多个有序集的并集,并将其储存到新的集合中。

bash 复制代码
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]

示例:

bash 复制代码
ZADD zset1 1 "one"
ZADD zset1 2 "two"
ZADD zset2 1 "one"
ZADD zset2 2 "two"
ZUNIONSTORE out 2 zset1 zset2
ZRANGE out 0 -1 WITHSCORES

示例代码

下面是一个完整的示例,展示了如何使用上述常用命令操作 Redis 有序集合类型:

bash 复制代码
# 启动 Redis CLI
redis-cli

# 向有序集合添加元素
ZADD myzset 1 "one"
ZADD myzset 2 "two"

# 获取有序集合中成员的分数
ZSCORE myzset "one"  # 输出: "1"

# 获取有序集合中成员的排名
ZRANK myzset "one"  # 输出: 0
ZREVRANK myzset "one"  # 输出: 1

# 按排名范围获取有序集合中的成员
ZRANGE myzset 0 -1  # 输出: 1) "one"  2) "two"
ZRANGE myzset 0 -1 WITHSCORES  # 输出: 1) "one"  2) "1"  3) "two"  4) "2"

# 按分数范围获取有序集合中的成员
ZRANGEBYSCORE myzset 0 2  # 输出: 1) "one"  2) "two"
ZRANGEBYSCORE myzset 0 2 WITHSCORES  # 输出: 1
相关推荐
Rust研习社19 小时前
Once、OnceCell、OnceLock:Rust 一次性初始化终极指南
后端·rust·编程语言
Rust研习社19 小时前
从入门到实践:Rust 异步编程完全指南
开发语言·后端·rust
GreenTea19 小时前
DeepSeek-V4 技术报告深度分析:基础研究创新全景
前端·人工智能·后端
用户83562907805119 小时前
使用 Python 自动管理 PowerPoint 幻灯片分节的方法
后端·python
逸风尊者20 小时前
XGBoost模型工程使用
java·后端·算法
ekuoleung20 小时前
量化平台中的 DSL 设计与实现:从规则树到可执行策略
前端·后端
小研说技术20 小时前
实时通信对比,一场MCP协议的技术革命
前端·后端·面试
ServBay21 小时前
2026年 Go 开发中没有它就不行的 10 个库
后端·go
SamDeepThinking21 小时前
别让一个超时的第三方http接口拖垮所有接口
java·后端·架构
我母鸡啊21 小时前
软考架构师故事系列-操作系统
后端