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
相关推荐
努力的小郑29 分钟前
今晚Cloudflare一哆嗦,我的加班计划全泡汤
前端·后端·程序员
百***618730 分钟前
springboot整合mybatis-plus(保姆教学) 及搭建项目
spring boot·后端·mybatis
q***58191 小时前
Spring全家桶简介
java·后端·spring
武昌库里写JAVA1 小时前
微擎服务器配置要求,微擎云主机多少钱一年?
java·vue.js·spring boot·后端·sql
IUGEI1 小时前
深入解析HTTP长连接原理
java·网络·后端·网络协议·tcp/ip·http·https
q***55581 小时前
SpringBoot项目中替换指定版本的tomcat
spring boot·后端·tomcat
汤姆yu1 小时前
基于springboot的电脑商城系统
java·spring boot·后端
码事漫谈2 小时前
Visual Studio 2026真的值得升级吗中国开发者实测报告
后端
MediaTea3 小时前
Python 第三方库:Flask(轻量级 Web 框架)
开发语言·前端·后端·python·flask
q***72563 小时前
Spring Boot + Vue 全栈开发实战指南
vue.js·spring boot·后端