您的位置:首页 > 游戏 > 游戏 > 沈丘网站建设_企业公司转让网_怎样在百度上免费做广告_2023年8月疫情严重吗

沈丘网站建设_企业公司转让网_怎样在百度上免费做广告_2023年8月疫情严重吗

2024/12/23 16:49:52 来源:https://blog.csdn.net/m0_74105656/article/details/142886137  浏览:    关键词:沈丘网站建设_企业公司转让网_怎样在百度上免费做广告_2023年8月疫情严重吗
沈丘网站建设_企业公司转让网_怎样在百度上免费做广告_2023年8月疫情严重吗

文章目录

  • 一. Zset有序集合简介.
  • 二. 添加元素相关命令.
    • 2.1 向有序集合中添加元素(==zadd==)
  • 三. 查询元素相关操作.
    • 3.1 查询有序集合中的元素个数( ==zcard zcount==)
    • 3.2 查询指定区间内的元素(==zrange zrevrange zrangebyscore==)
    • 3.3 查询有序集合中指定成员的排名(==zrank zrevrank== )
    • 3.4 查询有序集合中指定成员的分数(==zscore==)
  • 四. 删除元素相关操作.
    • 4.1 删除并返回最大/最小的n个元素(==zpopmax zpopmin==)
    • 4.2 带有阻塞性质删除最大/小元素(==bzpopmin bzpopmax==)
    • 4.3 删除有序集合中的n个元素( ==zrem zremrangebyrank zremrangebyscore==)
  • 五. 集合运算相关操作.
    • 5.1 求有序集合交集的操作(==zinterstore==)
    • 5.2 求集合并集的操作(==zunionstore==)

一. Zset有序集合简介.

  1. 定义: Zset(有序集合)是Redis中的一种数据类型,它保留了集合不能有重复成员的特点,但与普通集合不同的是,Zset中的每个元素都与一个唯一的浮点类型的分数(score)相关联,这使得Zset中的元素可以维护有序性。

  2. 如何保证有序性: 每个元素都与一个分数相关联,分数用于确定元素在集合中的位置,且分数可以重复当分数相同时,元素会根据其字典顺序进行排序。

  3. **Zset在Redis中底层的编码方式:

    • 压缩列表(ziplist):一种紧凑的数据结构,通常用于存储元素较少、元素较小的有序集合。它以连续的内存块形式存储数据,每个节点可以包含一个或多个元素,且可以非常紧凑地存储整数和字符串等不同类型的元素。
    • 跳跃表(skiplist):一种基于链表的数据结构,通常用于存储元素较多、元素较大的有序集合。跳跃表通过多层链表实现快速查找,其插入、删除、查找的时间复杂度均为O(logN)。

二. 添加元素相关命令.

2.1 向有序集合中添加元素(zadd)

  1. 命令基本格式:

ZADD key [NX | XX] [GT | LT] [CH] [INCR] score member [score member ...]

  1. 解释参数含义:
  1. NX: 当number不存在的时候才会添加对应的score-number
  2. XX: 当number存在的时候才会修改对应的score-number
  3. GT: 当更新元素的时候, 只有当给定的score比已有的score大, 才会更新成功.
  4. LT: 当更新元素的时候, 只有当给定的score比已有的score小, 才会更新成功.
  5. CH: 将返回值从添加的新元素数修改为更改的元素总数(CH是changed的缩写)。更改的元素是添加的新元素和已经存在的元素,并为其更新了分数。因此,在命令行中指定的具有与过去相同分数的元素不会被计算在内。注意:通常ZADD的返回值只计算添加的新元素的数量
  6. INCR:当指定这个选项时,ZADD的行为类似于ZINCRBY。在这种模式下只能指定一个分数-元素对
  1. 时间复杂度:

O(log(N)),其中N是排序集合中元素的个数。

  1. 演示命令的使用:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

三. 查询元素相关操作.

3.1 查询有序集合中的元素个数( zcard zcount)

  1. 命令基本格式:

ZCARD key
ZCOUNT key min max

  1. 时间复杂度:

zcard O(1)
zcount O(log(N)) N是排序集合中元素的个数。

  1. 演示命令的使用:
    在这里插入图片描述

3.2 查询指定区间内的元素(zrange zrevrange zrangebyscore)

  1. 命令基本格式:

ZRANGE key start stop [BYSCORE | BYLEX] [REV] [LIMIT offset count] [WITHSCORES] 获取指定下标范围内的元素
ZREVRANGE key start stop [WITHSCORES] 逆序获取指定下标范围内的元素
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 按照分数来找元素,和zcount的效果类似

  1. 时间复杂度:

zrange O(log(N)+M),其中N是排序集合中的元素个数,M是返回的元素个数。
zrevrange O(log(N)+M),其中N是排序集合中的元素个数,M是返回的元素个数。
zrangebyscore O(log(N)+M)其中N是排序集合中的元素个数M是返回的元素个数。如果M是常数(例如总是要求前10个元素有LIMIT),你可以认为它是O(log(N))。

  1. 演示命令的使用:
    在这里插入图片描述

3.3 查询有序集合中指定成员的排名(zrank zrevrank )

  1. 命令基本格式:

ZRANK key member [WITHSCORE] 查询有序集合中指定成员的排名
ZREVRANK key member [WITHSCORE] 查询有序集合中指定成员的逆序排名

  1. 时间复杂度:

O(log(N))

  1. 演示命令的使用:
    在这里插入图片描述

3.4 查询有序集合中指定成员的分数(zscore)

  1. 命令基本格式:

ZSCORE key member查询有序集合中指定成员的分数

  1. 时间复杂度:

O(1)

  1. 演示命令的使用:
    在这里插入图片描述

四. 删除元素相关操作.

4.1 删除并返回最大/最小的n个元素(zpopmax zpopmin)

  1. 命令基本格式:

ZPOPMAX key [count] 删除并返回最大的n个元素
ZPOPMIN key [count] 删除并返回最小的n个元素

  1. 时间复杂度:

都是 O(log(N)*M)其中N是排序集合中的元素个数,M是弹出的元素个数。

  1. 演示命令的使用:
    在这里插入图片描述

4.2 带有阻塞性质删除最大/小元素(bzpopmin bzpopmax)

  1. 命令基本格式:

BZPOPMAX key [key ...] timeout
BZPOPMIN key [key ...] timeout

  1. 时间复杂度:

O(log(N)) N是排序集合中元素的个数O(log(N)) N是排序集合中元素的个数

  1. 演示命令的使用:
    在这里插入图片描述
    在这里插入图片描述

4.3 删除有序集合中的n个元素( zrem zremrangebyrank zremrangebyscore)

  1. 命令基本格式:

ZREM key member [member ...] 删除有序集合中的n个元素
ZREMRANGEBYRANK key start stop 删除有序集合中指定排名范围内的成员
ZREMRANGEBYSCORE key min max 删除有序集合中指定分数范围内的成员

  1. 时间复杂度:

zrem O(M*log(N)),其中N是排序集合中元素的个数,M是要移除的元素的个数
zremrangebyrank O(log(N)+M),其中N是排序集合中的元素个数,M是操作移除的元素个数
zremrangebyscore O(log(N)+M),其中N是排序集合中的元素个数,M是操作移除的元素个数。

  1. 演示命令的使用:
    在这里插入图片描述

五. 集合运算相关操作.

5.1 求有序集合交集的操作(zinterstore)

  1. 命令基本格式:

ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>]

  1. 解释参数含义:
    • destination 要把求交集的结果存储到哪个key对应的zset之中.
    • numkeys 描述了后续有几个key参与交集运算.
    • weight 每个key对应的权重
  2. 时间复杂度:

O(N*K)+O(M*log(M))最坏情况,其中N是最小的输入排序集,K是输入排序集的个数,M是结果排序集中元素的个数。

5.2 求集合并集的操作(zunionstore)

  1. 命令基本格式:

ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE <SUM | MIN | MAX>]

  1. 时间复杂度:

O(N)+O(M log(M)),其中N是输入排序集的大小之和,M是结果排序集的元素个数。

  1. 演示命令的使用:
    在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com