四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)

四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)

文章目录

  • [四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用)](#四.4 Redis 五大数据类型/结构的详细说明/详细使用( zset 有序集合数据类型详解和使用))
  • [1. 有序集合 Zset(sorted set)](#1. 有序集合 Zset(sorted set))
  • [2. zset 有序集合常用指令(详细讲解说明)](#2. zset 有序集合常用指令(详细讲解说明))
    • [2.1 `zadd <key><score1><value1><score2><value2>...` 将一个或多个 member 元素及其 score 值加入 到有序集 key 当中。](#2.1 zadd <key><score1><value1><score2><value2>… 将一个或多个 member 元素及其 score 值加入 到有序集 key 当中。)
    • [2.2 `zrange <key><start><stop> [WITHSCORES]` 返回有序集 key 中,下标在`<start><stop>`之间的元素, 带 WITHSCORES,可以让分数一起和值返回到结果集,返回的结果是"升序"](#2.2 zrange <key><start><stop> [WITHSCORES] 返回有序集 key 中,下标在<start><stop>之间的元素, 带 WITHSCORES,可以让分数一起和值返回到结果集,返回的结果是“升序”)
    • [2.3 `zreverange <key><start><stop> [WITHSCORES]` 返回有序集 key 中,下标在`<start><stop>`之间的元素, 带 WITHSCORES,可以让分数一起和值返回到结果集,返回的是"降序"](#2.3 zreverange <key><start><stop> [WITHSCORES] 返回有序集 key 中,下标在<start><stop>之间的元素, 带 WITHSCORES,可以让分数一起和值返回到结果集,返回的是“降序”)
    • [2.4 `zscore <key><member> ` 返回有序集 key 中,成员 member 的 score 值](#2.4 zscore <key><member> 返回有序集 key 中,成员 member 的 score 值)
    • [2.5 `zrangebyscore key min max [withscores] [limit offset count]` 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。](#2.5 zrangebyscore key min max [withscores] [limit offset count] 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。)
    • [2.6 `zrevrangebyscore key max min [withscores] [limit offset count] 同上`,改为从大到小排列](#2.6 zrevrangebyscore key max min [withscores] [limit offset count] 同上,改为从大到小排列)
    • [2.7 `zincrby <key><increment><value> ` 为元素的 score 加上增量](#2.7 zincrby <key><increment><value> 为元素的 score 加上增量)
    • [2.8 `zrem <key><value>` 删除该集合下,指定值的元素](#2.8 zrem <key><value> 删除该集合下,指定值的元素)
    • [2.9 `zcount <key><min><max>` 统计该集合,分数区间内的元素个数](#2.9 zcount <key><min><max> 统计该集合,分数区间内的元素个数)
    • [2.10 `zrank <key><value>` 返回该值在集合中的排名,从 0 开始](#2.10 zrank <key><value> 返回该值在集合中的排名,从 0 开始)
  • [3. 最后:](#3. 最后:)

1. 有序集合 Zset(sorted set)

  1. Redis 有序集合 zset 与 普通集合 set 非常相似,时一个没有重复元素的字符串集合
  2. 不同之处是有序集合的每个成员都关联了一个评分(score) ,这个评分(score) 被用来按照,从最低分到最高分的方式排序集合中的成员。集合的成员是唯一的,但是评分是可以重复的。
  3. 因为元素是有序的,所以有可以很快的根据评分(score) 或者次序 (position)来获取一个范围的元素内容。
  4. 访问有序集合的中间元素也是非常快的,你能够使用有序集合作为一个没有重复成员的列表。

sorted set 指令示意图- 案例蜀国五虎将:

2. zset 有序集合常用指令(详细讲解说明)

关于 zset 有序集合的命令,在 Redis 当中有如下这些:

这里我们介绍一些 zset 有序集合比较常用的一些命令,然后,举一反三,根据文档也可以对其它的命令上手学习使用了

2.1 zadd <key><score1><value1><score2><value2>... 将一个或多个 member 元素及其 score 值加入 到有序集 key 当中。

sh 复制代码
127.0.0.1:6379> zadd hero 1 "gy" 2 "zf" 3 "zy" 4 "mc" 5 "hz"

2.2 zrange <key><start><stop> [WITHSCORES] 返回有序集 key 中,下标在<start><stop>之间的元素, 带 WITHSCORES,可以让分数一起和值返回到结果集,返回的结果是"升序"

sh 复制代码
127.0.0.1:6379> zrange hero 0 -1

注意: zrange 后面可以追加上,带 WITHSCORES,可以让分数一起和值返回到结果集。默认是根据 score 评分进行一个升序排序的。

2.3 zreverange <key><start><stop> [WITHSCORES] 返回有序集 key 中,下标在<start><stop>之间的元素, 带 WITHSCORES,可以让分数一起和值返回到结果集,返回的是"降序"

使用和 zrange 是一样的。

sh 复制代码
127.0.0.1:6379> zrevrange hero 0 -1
sh 复制代码
127.0.0.1:6379> zrevrange hero 0 -1 withscores

2.4 zscore <key><member> 返回有序集 key 中,成员 member 的 score 值

sh 复制代码
127.0.0.1:6379> zscore hero gy

2.5 zrangebyscore key min max [withscores] [limit offset count] 返回有序集 key 中,所有 score 值介于 min 和 max 之间(包括等于 min 或 max )的成员。有序集成员按 score 值递增(从小到大)次序排列。

sh 复制代码
127.0.0.1:6379> zrangebyscore hero 1 3

2.6 zrevrangebyscore key max min [withscores] [limit offset count] 同上,改为从大到小排列

sh 复制代码
127.0.0.1:6379> zrevrangebyscore hero 5 1

2.7 zincrby <key><increment><value> 为元素的 score 加上增量

sh 复制代码
127.0.0.1:6379> zincrby hero 4 zf

当然,也可以是 - score评分值了

sh 复制代码
127.0.0.1:6379> zincrby hero -4 zf

2.8 zrem <key><value> 删除该集合下,指定值的元素

sh 复制代码
127.0.0.1:6379> zrem hero "zy"

2.9 zcount <key><min><max> 统计该集合,分数区间内的元素个数

sh 复制代码
127.0.0.1:6379> zcount hero 2 10

2.10 zrank <key><value> 返回该值在集合中的排名,从 0 开始

sh 复制代码
127.0.0.1:6379> zrank hero gy

3. 最后:

"在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。"

相关推荐
麦兜*5 分钟前
MongoDB 6.0 新特性解读:时间序列集合与加密查询
数据库·spring boot·mongodb·spring·spring cloud·系统架构
chat2tomorrow8 分钟前
数据采集平台的起源与演进:从ETL到数据复制
大数据·数据库·数据仓库·mysql·低代码·postgresql·etl
a587699 分钟前
消息队列(MQ)初级入门:详解RabbitMQ与Kafka
java·分布式·microsoft·面试·kafka·rabbitmq
稻草人想看远方11 分钟前
关系型数据库和非关系型数据库
数据库
考虑考虑12 分钟前
Postgerssql格式化时间
数据库·后端·postgresql
@小红花20 分钟前
从0到1学习Vue框架Day03
前端·javascript·vue.js·学习·ecmascript
千里码aicood20 分钟前
【springboot+vue】党员党建活动管理平台(源码+文档+调试+基础修改+答疑)
java·数据库·spring boot
前端与小赵22 分钟前
vue3中 ref() 和 reactive() 的区别
前端·javascript·vue.js
Chan1624 分钟前
【智能协同云图库】基于统一接口架构构建多维度分析功能、结合 ECharts 可视化与权限校验实现用户 / 管理员图库统计、通过 SQL 优化与流式处理提升数据
java·spring boot·后端·sql·spring·intellij-idea·echarts
先做个垃圾出来………30 分钟前
差分数组(Difference Array)
java·数据结构·算法