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
相关推荐
舒一笑1 小时前
为什么where=Version就是乐观锁了?
后端·mysql·程序员
GoGeekBaird1 小时前
关于垂类AI应用落地行业的方法论思考
后端·github·agent
小宁爱Python1 小时前
Django 基础入门:命令、结构与核心配置全解析
后端·python·django
你的人类朋友2 小时前
认识一下Bcrypt哈希算法
后端·安全·程序员
tangweiguo030519872 小时前
基于 Django 与 Bootstrap 构建的现代化设备管理平台
后端·django·bootstrap
IT果果日记2 小时前
详解DataX开发达梦数据库插件
大数据·数据库·后端
dazhong20122 小时前
Spring Boot 项目新增 Module 完整指南
java·spring boot·后端
bobz9653 小时前
Cilium + Kubevirt 与 Kube-OVN + Kubevirt 在公有云场景下的对比与选择
后端
David爱编程4 小时前
深度解析:synchronized 性能演进史,从 JDK1.6 到 JDK17
java·后端
脑子慢且灵4 小时前
【JavaWeb】一个简单的Web浏览服务程序
java·前端·后端·servlet·tomcat·web·javaee