• 89、Redis 的 value 所支持的数据类型(String、List、Set、Zset、Hash)---->Zset 相关命令


    本次讲解要点:
    ** Set相关命令:是指value中的数据类型**

    启动redis服务器:
    打开小黑窗:
    C:\Users\JH>e:
    E:>cd E:\install\Redis6.0\Redis-x64-6.0.14\bin
    E:\install\Redis6.0\Redis-x64-6.0.14\bin>redis-server.exe redis.windows.conf

    启动redis客户端:
    小黑窗:redis-cli

    ★ Redis的数据类型(都是针对Redis的value而言)

    redis和map差不多。
    Map 只能保存在内存中,
    redis可以保存在磁盘。

    Redis的key都是String

    ▲ value支持如下5种数据类型:

    String: 最基本的数据类型,可保存任何的数据。
    List: 元素是String的有序集合,集合内的元素可以重复。
    Set: 元素是String的无序集合,集合内的数据不能重复。
    Zset: 元素是String的有序集合,集合内的数据不能重复。
    Hash: 也是key-value集合(类似Java的Map),key和value都是String类型的数据。这种类型主要用于保存对象。

    Redis为不同数据类型提供了不同的操作命令,因此特定类型的数据需要使用对应类型的命令来执行操作。

    ★ ZSet相关的命令

    zset 和 set 的区别:
    ZSet相当于Set的增强版,它会每个元素都分配一个double类型的score(分数),并按该score对集合中元素排序。有点类似于TreeSet。
    ZSet集合内元素不允许重复,但元素的score是可以重复的。
    分数大的排前面

    ZADD key score member [score member …]: 向ZSet添加一个或多个元素,或更新已有的元素的score。

    ZCARD key: 返回key对应的ZSet中元素的个数

    ZCOUNT key min max: 返回ZSet的score位于min到max之间的元素个数。

    ZDIFF numkeys key [key …] [WITHSCORES]: 计算给定ZSet之间的差值。该命令要Redis 6.2+才可用。

    ZDIFFSTORE destination numkeys key [key …]: ZDIFF的存储版本,
    将给定ZSet的差值保存到destination中。该命令要Redis 6.2+才可用。

    ZINCRBY key increment member: 将memeber元素的score增加increment。
    随着元素的score的改变,ZSet中元素的顺序也会随之改变。

    ZINTER numkeys key [key …]: 计算给定ZSet的交集。该命令要Redis 6.2+才可用。

    ZINTERSTORE destination numkeys key [key …]: ZINTER的存储版本,
    将给定ZSet的交集保存到destination中。交集中元素的score是相同元素的score之和。

    ZLEXCOUNT key min max: 返回ZSet内按字典排序时从min到max之间所有元素的个数。
    一般用于对ZSet中所有元素的score都相等时进行处理。
    min:可支持的写法: - 代表最小值。[字符串, 代表包含边界。(字符串,代表不包含边界。

      max:可支持写法:+代表最大值,[字符串, 代表包含边界。(字符串,代表不包含边界。
    
    提示:当向ZSet添加多个score相等的元素时,ZSet就会使用字典顺序(英文字典中字母的排序方式)对这些元素排序,
          此时就可按字典顺序来获取指定范围内元素的个数。
    
    • 1
    • 2
    • 3
    • 4

    ZPOPMAX key [count]: 弹出ZSet中分数最大的元素。

    BZPOPMAX key [key…] timeout: ZPOPMAX的阻塞版本。该命令会阻塞进程,直到指定ZSet有元素弹出或超时。

    ZPOPMIN key [count]: 弹出ZSet中分数最小的元素。

    BZPOPMIN key [key …] timeout: ZPOPMIN的阻塞版本。该命令会阻塞进程,直到指定ZSet有元素弹出或超时。

    ZRANGE key start stop [WITHSCORES]: 返回ZSet内从start索引到stop索引范围内的元素(及score)。
    索引支持负数,负数表示从最后面开始,比如-1代表最后一个元素。
    类似于List的LRange命令。

    ZRANGEBYLEX key min max [LIMIT offset count]: 返回ZSet内按字典排序时从min到max之间的所有元素。

    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]: 返回ZSet内分数从min到max之间的所有元素。

    ZRANK key member: 返回ZSet内指定元素的索引。score最小的索引是0。

    ZREM key member [member …]: 删除ZSet内一个或多个元素。

    ZREMRANGEBYLEX key min max: 按字典排序删除ZSet从min到max之间的所有元素。

    ZREMRANGEBYRANK key start stop: 删除ZSet内从start索引到stop索引之间的所有元素。

    ZREMRANGEBYSCORE key min max: 删除ZSet内score位于min到max之内的所有元素。

    ZREVRANGE key start stop [WITHSCORES]: ZRANGE的反向版本。

    ZREVRANGEBYLEX key max min [LIMIT offset count]: ZRANGEBYLEX的反向版本。

    ZREVRANGEBYSCORE key max min [WITHSCORES]: ZRANGEBYSCORE的反向版本。

    ZREVRANK key member: ZRANK的反向版本。score最大的反向索引反而是0。

    ZSCORE key member: 获取指定元素的score。

    ZUNION numkeys key [key …]: 计算给定ZSet的并集。该命令要Redis 6.2+才可用。

    ZUNIONSTORE destination numkeys key [key …]: ZUNION的存储版本,将给定ZSet的并集保存到destination中。

    ZMSCORE key member [member …]: 获取多个元素的score,该命令要Redis 6.2+才可用。

    ZSCAN key cursor [MATCH pattern] [COUNT count]:
    使用cursor遍历key对应的ZSet。pattern指定只遍历匹配pattern的元素。

      注意:实际上该count选项根本不起作用。因为redis的设计在遍历Zet、Hash,总会将所有的元素在一次遍历时就返回出来。
    
    【注意点:】:在Zset中,将元素的位置索引称为RANK,排在第一位的(score最小的元素)的RANK是0。
    
    • 1
    • 2
    • 3

    演示:

    ZADD key score member [score member …]: 向ZSet添加一个或多个元素,或更新已有的元素的score。
    在这里插入图片描述

    ZCARD key: 返回key对应的ZSet中元素的个数
    在这里插入图片描述

    ZCOUNT key min max: 返回ZSet的score位于min到max之间的元素个数。
    在这里插入图片描述

    ZINCRBY key increment member: 将memeber元素的score增加increment。
    随着元素的score的改变,ZSet中元素的顺序也会随之改变。
    就是给某个元素增加分数在这里插入图片描述

    ZINTERSTORE destination numkeys key [key …]: ZINTER的存储版本,
    将给定ZSet的交集保存到destination中。交集中元素的score是相同元素的score之和。

    这里的 numkeys 就是如果是两个集合要进行查询交集的部分,那么这个 numkeys 就要写为 2,
    3个zset集合要查交集,那么numkeys就是3

    在这里插入图片描述

    在这里插入图片描述

    ZLEXCOUNT key min max: 返回ZSet内按字典排序时从min到max之间所有元素的个数。
    注意点:一般用于对ZSet中 所有元素的score都相等 时进行处理

    min:可支持的写法: - 代表最小值。[ 字符串, 代表包含边界。(字符串,代表不包含边界。
    max:可支持写法:+代表最大值,[ 字符串, 代表包含边界。(字符串,代表不包含边界。

    提示:
    当向ZSet添加多个score相等的元素时,
    ZSet就会使用 字典顺序(字典顺序:英文字典中字母的排序方式)对这些元素排序,
    此时就可按字典顺序来获取指定范围内元素的个数。

    在这里插入图片描述
    ZPOPMAX key [count]: 弹出ZSet中分数最大的元素。并回显

    在这里插入图片描述
    BZPOPMAX key [key…] timeout: ZPOPMAX的阻塞版本。该命令会阻塞进程,直到指定ZSet有元素弹出或超时。
    在这里插入图片描述

    ZPOPMIN key [count]: 弹出ZSet中分数最小的元素。
    BZPOPMIN key [key …] timeout: ZPOPMIN的阻塞版本。该命令会阻塞进程,直到指定ZSet有元素弹出或超时。
    在这里插入图片描述

    ZRANGE key start stop [WITHSCORES]: 返回ZSet内从start索引到stop索引范围内的元素(及score)。
    索引支持负数,负数表示从最后面开始,比如-1代表最后一个元素。
    类似于List的LRange命令。
    在这里插入图片描述

    ZRANGEBYLEX key min max [LIMIT offset count]: 返回ZSet内按字典排序时从min到max之间的所有元素。
    提示:
    当向ZSet 添加多个score相等的元素时,
    ZSet就会使用 字典顺序(字典顺序:英文字典中字母的排序方式)对这些元素排序,
    此时就可按字典顺序来获取指定范围内元素的个数。
    在这里插入图片描述

    ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]: 返回ZSet内分数从min到max之间的所有元素。
    在这里插入图片描述

    ZRANK key member: 返回ZSet内指定元素的索引。score最小的索引是0。
    在这里插入图片描述

    ZREM key member [member …]: 删除ZSet内一个或多个元素。
    在这里插入图片描述

    ZREMRANGEBYLEX key min max: 按字典排序删除ZSet从min到max之间的所有元素。
    在这里插入图片描述

    ZREMRANGEBYRANK key start stop: 删除ZSet内从start索引到stop索引之间的所有元素。
    在这里插入图片描述

    ZREMRANGEBYSCORE key min max: 删除ZSet内score位于min到max之内的所有元素。
    在这里插入图片描述

    ZSCORE key member: 获取指定元素的score。
    在这里插入图片描述

    ZSCAN key cursor [MATCH pattern] [COUNT count]:
    使用cursor遍历key对应的ZSet。pattern指定只遍历匹配pattern的元素。

    注意:实际上该count选项根本不起作用。因为redis的设计在遍历Zet、Hash,总会将所有的元素在一次遍历时就返回出来。

    【注意点:】:在Zset中,将元素的位置索引称为RANK,排在第一位的(score最小的元素)的RANK是0。
    在这里插入图片描述

  • 相关阅读:
    工厂方法模式
    vue3的Watch使用详解
    数据库复习题带答案
    golang 终端输入 运算符优先顺序
    揭秘 JDQ 限流架构:实时数据链路的多维动态带宽管控|京东零售技术实践
    解决npm-v显示空白的问题
    【小米0923】二、循环去除连续重复元素 <栈>
    【11.3】【VP】Codeforces Round #724 (Div. 2)
    【.NET 6】多线程的几种打开方式和代码演示
    【编程题】【Scratch二级】2022.03 跳跃游戏
  • 原文地址:https://blog.csdn.net/weixin_44411039/article/details/133348808