登录  /  注册
首页 > 数据库 > Redis > 正文

Redis有序集合使用知识点归纳

WBOY
发布: 2022-07-01 12:25:26
转载
1775人浏览过

本篇文章给大家带来了关于redis的相关知识,其中主要整理了有序集合的相关问题,有序的集合,每个元素都由一个成员和一个与成员相关联的分值组成,成员以字符串存储,分值以64位双精度浮点数存储,下面一起来看一下,希望对大家有帮助。

Redis有序集合使用知识点归纳

推荐学习:Redis视频教程

Redis数据结构:有序集合

有序的集合。每个元素都由一个成员和一个与成员相关联的分值组成,成员以字符串存储,分值以64位双精度浮点数存储。成员不可重复,以分值大小进行排序,相同分值时以成员字典序排序。

数据结构

  • 字符串
  • 散列
  • 列表
  • 集合
  • 有序集合
  • HyperLogLog
  • 位图
  • 地理坐标

有序集合(sorted set)

  • 添加或更新成员
    1.zadd命令  格式:zadd key [NX|XX] [GT|LT] [CH] [INCR] score member [score member …]
    返回添加成功的新成员数量,若执行的是更新成员分值返回0。
    zadd key score member [score member ...]
    在这里插入图片描述
    XX选项的作用是只更新不添加,执行后返回0。
    zadd key XX score member [score member ...]
    在这里插入图片描述
    NX选项的作用是只添加不更新,执行成功返回添加元素的个数。
    zadd key NX score member [score member ...]
    在这里插入图片描述
    CH选项的作用是返回被修改成员的数量而非添加成功的成员数量,被修改包括新添加。
    zadd key CH score member [score member ...]
    在这里插入图片描述

  • 移除指定成员
    1.zrem命令  格式:zrem key member [member …]
    返回被移除成员的数量,成员不存在于集合中时自动忽略。
    zrem key member [member ...]
    在这里插入图片描述
    2.zremrangebyrank命令  格式:zremrangebyrank key start stop
    移除指定排名范围内的成员,返回被移除成员的数量,排名可使用正数排名或负数排名。
    zremrangebyrank key start stop
    在这里插入图片描述
    3.zremrangebyscore命令  格式:zremrangebyscore key min max
    移除指定分值范围内的成员,返回被移除成员的数量。min或max前加“(”表示取开区间即不包含边界值。
    zremrangebyscore key min max
    在这里插入图片描述
    4.zremrangebylex命令  格式:zremrangebylex key min max
    对于按照字典序排列的有序集合(即分值相同),移除指定字典序范围内的成员。返回被移除成员的数量,min、max的可取值包括:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“+”表示无穷大,“-”表示无穷小。
    zremrangebylex key min max
    在这里插入图片描述

  • 弹出元素
    1.zpopmax命令  格式:zpopmax key [count]
    弹出分值最高的count个成员,分值最高有多个元素时弹出字典序最大的成员,若未指定count默认1个,执行完成后返回被弹出元素的成员和分值。
    zpopmax key [count]
    在这里插入图片描述
    2.zpopmin命令  格式:zpopmin key [count]
    弹出分值最低的count个成员,分值最低有多个元素时弹出字典序最小的成员,若未指定count默认1个,执行完成后返回被弹出元素的成员和分值。
    zpopmin key [count]
    3.bzpopmax命令  格式:bzpopmax key [key …] timeout
    阻塞式的zpopmax命令,timeout为秒级精度。命令依次检查给定的有序集合,并从第一个非空集合弹出分值最大的元素,否则阻塞当前客户端直到有元素或超出超时时间返回nil。成功弹出元素时将返回一个列表,包含被弹出元素所在有序集合、成员以及分值。
    bzpopmax key [key ...] timeout
    在这里插入图片描述
    4.bzpopmin命令  格式:bzpopmin key [key …] timeout
    阻塞式的zpopmin命令,timeout为秒级精度。命令依次检查给定的有序集合,并从第一个非空集合弹出分值最小元素,否则阻塞当前客户端直到有元素或超出超时时间返回nil。成功弹出元素时将返回一个列表,包含被弹出元素所在有序集合、成员以及分值。
    bzpopmin key [key ...] timeout
    在这里插入图片描述
    客户端2:
    在这里插入图片描述

  • 获取成员分值
    1.zscore命令  格式:zscore key member
    获取给定成员的分值,集合不存在或者成员不存在时返回nil。
    zscore key member
    在这里插入图片描述

  • 对成员分值做运算
    1.zincrby命令  格式:zincrby key increment member
    执行完后返回当前成员分值,increment为正时自增,否则为自减;若键不存在或成员不存在则执行创建操作。
    zincrby key increment member
    在这里插入图片描述

  • 获取成员数量
    1.zcard命令  格式:zcard key
    返回集合包含的成员数量,集合不存在时返回0。
    zcard key
    在这里插入图片描述
    2.zcount命令  格式:zcount key min max
    获取指定分值范围内的成员数量,min或max前加“(”表示取开区间即不包含边界值,值+inf表示无穷大,-inf表示无穷小。
    zcount key min max
    在这里插入图片描述
    3.zlexcount命令  格式:zlexcount key min max
    对于按照字典序排列的有序集合(即分值相同),获取指定字典序范围内的成员数量,min、max的可取值包括:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“+”表示无穷大,“-”表示无穷小。
    zlexcount key min max
    在这里插入图片描述

  • 获取成员排名
    1.zrank命令  格式:zrank key member
    返回成员的升序排列排名,集合或成员不存在时返回nil。
    zrank key member
    在这里插入图片描述
    2.zrevrank命令  格式:zrevrank key member
    返回成员的降序排列排名,集合或成员不存在时返回nil。
    zrevrank key member
    在这里插入图片描述

  • 获取成员
    1.zrange命令  格式:zrange key min max [BYSCORE|BYLEX] [REV] [LIMIT offset count] [WITHSCORES]
    获取指定索引范围内的成员,按分值大小升序排列。WITHSCORES选项可在命令执行后返回分值,返回列表奇数位为成员,偶数位为对应分值。集合不存在时返回empty。
    zrange key min max [WITHSCORES]
    在这里插入图片描述
    2.zrevrange命令  格式:zrevrange key start stop [WITHSCORES]
    获取指定索引范围内的成员,按分值大小降序排列。WITHSCORES选项可在命令执行后返回分值,返回列表奇数位为成员,偶数位为对应分值。集合不存在时返回empty。
    zrevrange key start stop [WITHSCORES]
    在这里插入图片描述
    3.zrangebyscore命令  格式:zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
    获取指定分值范围内的成员,按分值大小升序排列。WITHSCORES选项可在命令执行后返回分值,返回列表奇数位为成员,偶数位为对应分值。集合不存在时返回empty。
    zrangebyscore key min max [WITHSCORES] [LIMIT offset count]
    在这里插入图片描述
    [LIMIT offset count]选项的作用是限制返回的成员数量,offset指定需要跳过的成员数量,count执行最多返回成员的数量,count为负时取绝对值。
    在这里插入图片描述
    min或max前加“(”表示取开区间即不包含边界值,值+inf表示无穷大,-inf表示无穷小。
    在这里插入图片描述
    4.zrevrangebyscore命令  格式:zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
    获取指定分值范围内的成员,按分值大小降序排列,注意max min顺序。
    zrevrangebyscore key max min [WITHSCORES] [LIMIT offset count]
    在这里插入图片描述
    5.zrangebylex命令  格式:zrangebylex key min max [LIMIT offset count]
    当成员分值相同时,获取指定字典序范围内成员,按字典序升序排列,min、max的可取值包括:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“+”表示无穷大,“-”表示无穷小。
    zrangebylex key min max [LIMIT offset count]
    在这里插入图片描述
    6.zrevrangebylex命令  格式:zrevrangebylex key max min [LIMIT offset count]
    当成员分值相同时,获取指定字典序范围内成员,按字典序降序排列,max、min的可取值包括:带“[”的值表示包含字典序边界,带“(”表示不包含字典序边界,“+”表示无穷大,“-”表示无穷小。
    zrevrangebylex key max min [LIMIT offset count]

  • 集合运算
    1.并集
     1)zunionstore命令  格式:zunionstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
    numkeys为参与运算的集合数量,不对应时返回error,执行完后返回新集合的成员数量。并集得到的为成员集合,若参与运算的集合中有相同成员,则默认新集合的成员分值为原集合成员分数相加。
    zunionstore destination numkeys key [key ...]
    在这里插入图片描述
    AGGREGATE选项作用是指定使用的聚合函数,不指定时默认SUM。SUM指分值相加,MIN指取最小分值,MAX指取最大分值。
    zunionstore destination numkeys key [key ...] [AGGREGATE SUM|MIN|MAX]
    在这里插入图片描述
    WEIGHTS 选项作用是执行聚合前为每个集合分别设置一个权重,权重分别与集合中成员分值相乘得到新分值,然后执行聚合计算。
    在这里插入图片描述
     2)zunion命令  格式:zunion numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    执行完成后返回新集合成员。
    zunion numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    2.交集
     1)zinterstore命令  格式:zinterstore destination numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
    执行完后返回新集合的成员数量。
    zinterstore destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
     2)zinter命令  格式:zinter numkeys key [key …] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    执行完后返回新集合成员。
    zinter numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX] [WITHSCORES]
    注意
    1.集合运算可以使用集合作为输入,默认情况下,集合成员的分值看做1参与运算,可使用WEIGHTS选项设置权重改变集合分值。

  • 常见用法
    1.排行榜
    2.时间线

推荐学习:Redis视频教程

以上就是Redis有序集合使用知识点归纳的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:CSDN网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号