带你玩转 Redis 的 SortedSet 数据类型

🎨 个人介绍

👉大家好,我是:知识的搬运工旺仔

👉认真分享技术,记录学习过程的点滴,如果我的分享能为你带来帮助,请支持我奥🍻

👉你的支持,是我每天更新的动力。

👉赞点:👍 留言:✍ 收藏:⭐

👉个人格言:想法一步一步的落实,才是你我前进最佳选择。

1. SortedSet 数据类型简介

  1. 有序的String 集合
  2. 有序集合中不存在重复元素
  3. 每个集合元素都有一个对应的double 类型的分数
  4. 可以通过这个分数对集合元素进行从小到大的排序
  5. 集合元素是唯一的,集合的分数可以重复

2. 添加元素到有序集合中

ZADD key score member [[score member] [score member] …]

:::success

  1. ZADD 命令:添加多个元素到有序集合中
  2. key中存在number ,就会更新number 中的 score 的值
  3. source 可以是double 类型的双精度浮点型,也可以是整数
  4. key 不存在,会创建一个集合。之后在执行SADD操作
  5. 返回成功添加的新元素的数量,不返回更新的数量 :::

ZINCRBY key increment member

:::success ZINCRBY 命令:为分数加上增量

  1. 为key 中number 的 score 值增加上 increment 值
  2. 当increment 是负数的时候,相当于 score 减去 increment
  3. key 不是有序集合,返回一个错误 :::

3. 获取有序集合元素

ZCARD key

:::success ZCARD 命令:获取有序集合中的元素数量

  1. 获取key 中 元素 number 的数量
  2. key b不存在,返回0 :::

ZCOUNT key min max

:::success ZCOUNT 命令:获取在分数区间内的元素数量

  1. 获取 score 值在min 和 max 之间的元素数量
  2. 默认包含score 值等于 min 或 max :::

ZLEXCOUNT key min max

:::success ZLEXCOUNT 命令:获取在指定区间内的元素数量

  1. 这个命令统计的是score 相同的元素
  2. key介于min和max范围内的元素数量
  3. “(” 表示该元素不会被包含在内
  4. “[” 表示该元素会被包含在内
    • 表示集合开始第一个位置,包含第一个位置
  5. -表示集合最后一个位置,包含最后一个位置 :::

ZRANGE key start stop [WITHSCORES]

:::success ZRANGE 命令:获取在指定区间内的元素

  1. 获取有序集合key 中指定区间内的元素
  2. 返回按照score 值从小到大的顺序排序的值
  3. start 和 stop 的默认值是0
  4. start 和 stop 超出有序集合下标不引起错误
  5. start > stop ,返回一个空集合
  6. 使用WITHSCORES 选项来返回元素的 score 值,没有这个选项,默认不会返回score :::

ZREVRANGE key start stop [WITHSCORES]

:::success ZREVRANGE 命令:获取执行区间内的元素(降序)、

  1. 降序返回有序集合key 中指定区间内的元素
  2. 使用WITHSCORES 选项来返回元素的 score 值,没有这个选项,默认不会返回score :::

ZSCORE key member

:::success ZSCORE 命令:获取元素的分数值

  1. 返回有序集合key 中member 元素的 score 值
  2. member 或者 key 不存在,返回nil
  3. 命令执行成功后,会以String 类型的值返回 member 元素的 score 值 :::

ZRANGEBYLEX key min max [LIMIT offset count]

:::success ZEANGEBYLEX 命令:获取集合在指定范围内的元素

  1. 返回score 值介于 min 和 max 之间元素。当score 值相同时,按照字典顺序排序
  2. 如果key 中 score 的值,都不相同,返回结果时未指定的(unspecified)
  3. LIMIT offset count 参数用于获取指定范围内的匹配元素,offset是偏移量,count是统计偏移量后边多少个 :::

ZRANGEBYSCORE key min max [WITHSCORE] [LIMIT offset count]

:::success ZRANGEBYSCORE 命令:获取在指定区间内的元素

  1. 返回有序集合key 中 score 值介于 min 和 max 之间(包含 min 和 max )的元素
  2. 可以用+inf(集合的第一个元素)、-inf(集合的最后一个元素)来设置 min 和 max
  3. 可以使用"(" 来 修改 min 和max 的默认包含属性,改变为不包含min 和 max
  4. 使用WITHSCORES 选项来返回元素的 score 值,没有这个选项,默认不会返回score
  5. LIMIT offset count 参数用于获取指定范围内的匹配元素,offset是偏移量,count是统计偏移量后边多少个 :::

ZREVRANGEBYSCORE key max min [WITHSCORE] [LIMIT offset count]

:::success ZREVRANGEBYSCORE 命令:获取在指定区域内的所有元素(降序)

  1. 降序返回有序集合key 中,score 值介于 max 和 min 之间(包含)的所有元素
  2. 使用WITHSCORES 选项来返回元素的 score 值,没有这个选项,默认不会返回score
  3. LIMIT offset count 参数用于获取指定范围内的匹配元素,offset是偏移量,count是统计偏移量后边多少个 :::

4. 有序集合排名

ZRANK key member

:::success ZRANK 命令:获取有序集合元素的排名

  1. 获取有序集合key 中member 元素的排名
  2. member 不存在 返回 nil :::

ZREVRANK key member

:::success ZREVRANK 命令:获取有序集合元素的倒序排序

  1. 倒序返回 member 在 有序集合中的排名
  2. member 不存在 返回 nil :::

5. 有序集合运算

ZINTERSTORE destination numkeys key [key…] [WEIGHTS weight [weight…]] [AGGREGATE SUM | MIN | MAX]

:::success ZINTERSTORE 命令:保存多个有序集合的交集

  1. 计算一个或多个有序集合 key 的交集,其中key 的数量,必须和numbers 相等
  2. 将计算完的结果,保存到destination 中
  3. score 的值,等于所有相同元素score 值的和
  4. 返回保存到destination 结果集中的元素个数 :::

ZUNIONSTORE destination numkeys key [key…] [WEIGHT [weight] [weight…] ] [AGGREGATE SUM | MIN |MAX]

:::success ZUNIONSTORE 命令:保存多个有序集合的并集

  1. key 的数量,必须和numbers 相等

  2. score 的值,等于所有相同元素score 值的和

  3. weight 用于给 每一个 score 乘上 weight,这个执行在将值传递给聚合函数之前

  4. WEIGHT 的默认值是 1

  5. AGGREGATE 选项用来指定计算并集结果的聚合方式

    1. SUM:默认的聚合方式,将某个元素所有相同score 的值,相加之后,返回给该元素,作为新的score
    2. MIN:这种聚合方式,是将某个元素所有相同score 的值,找出最小的score,返回给该元素,作为新的score
    3. MAX:这种聚合方式,是将某个元素所有相同score 的值,找出最大的score,返回给该元素,作为新的score :::

6. 删除有序集合元素

ZREM key member [member…]

:::success ZREM 命令:删除有序集合中的多个元素

  1. 删除key中一个或者多个元素,不存在的 key 将会被忽略
  2. key 存在,不是有序集合,将返回一个错误
  3. 执行成功后,返回被删除元素的数量 :::

ZREMRANGEBYLEX key min max

:::success ZREMRANGEBYLEX 命令:删除有序集合在指定区间内的元素

  1. 删除有序集合 key 中,介于 min 和 max 范围内的 score 值相同的所有元素
  2. min 和 max 可以包含,也可以不包含,取决于是否使用"(" :::

ZREMRANGEBYRANK key start stop

:::success ZREMRANGEBYRANK 命令:删除有序集合在指定排名区间的元素

  1. 删除有序集合 key 在指定排名(rank)区间内的所有元素
  2. 区间范围由start 和 stop 给出,包含 start 和 stop 在内 :::

ZREMRANGEBYSCORE key min max

:::success ZREMRANGEBYSCORE 命令:删除有序集合在指定分数区间内的元素

  1. 删除有序集合 key 中,所有score 值,介于 min 和 max 之间(包含)的元素 :::
    🎈看完了不妨给我点个赞吧,👉你的支持,是我每天更新的动力…
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

知识的搬运工旺仔

希望能帮助到大家学习

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值