Redis之流

1. 简介

  • 流是使用Redis实现消息队列应用的最佳选择
  • 流是一个包含零个或任意多个流元素的有序队列,队列中的每个元素都包含一个ID和任意多个键值对,这些元素会根据ID的大小在流中有序地进行排列

在这里插入图片描述


2. xadd

xadd stream id field value [field value]:将一个带有指定ID以及包含指定键值对的元素追加到流的末尾

流元素id

  • 流元素的ID由毫秒时间(millisecond)和顺序编号(sequcen number)两部分组成

  • 毫秒时间是UNIX时间戳,以0为起始值的顺序编号则用于区分同一时间内产生的多个不同元素

    在这里插入图片描述

不完整的流id

  • 只给出毫秒时间,Redis会自动将ID的顺序编号部分设置为0
    在这里插入图片描述

流元素id的限制

  • newTime>oldMaxTime: 允许添加

  • newTimeM<=oldMaxTime&&newNum>oldNum: 允许添加

  • 其他情况都不允许添加

    在这里插入图片描述
    在这里插入图片描述

自动生成元素id

  • 将符号*用作id参数的值时,Redis将自动为新添加的元素生成一个可用的新ID
  • 如果在当前毫秒之内还没有出现过任何ID,那么新ID的顺序编号将被设置为0
  • 如果在当前毫秒内已经存在其他ID,那么这些ID中顺序编号最大的那个加上1就是新ID的顺序编号
    在这里插入图片描述

限制流的长度

在这里插入图片描述


2. xtrim

xtrim strem maxlen n:执行XTRIM命令直接将流修剪至指定长度
在这里插入图片描述在这里插入图片描述

XTRIM命令与带有MAXLEN选项的XADD命令一样,都是根据先进先出规则来淘汰旧元素的


3. xdel

xdel stram [id id id]:接受一个流以及任意多个元素ID作为输入,并从流中移除ID对应的元素
在这里插入图片描述


4. xlen

xlen stream:对流执行XLEN命令,获取流目前包含的元素数量

  • 流不存在,或者流中没有元素返回0
    在这里插入图片描述

5. xrange/xrevrange

xrange stream start-id end-id [count n]:获取指定id范围内的元素
在这里插入图片描述

  1. 获取指定id的单个元素(设置起始结束id相同)
    在这里插入图片描述

  2. 获取指定id范围内的元素
    在这里插入图片描述

  3. 获取所有元素
    在这里插入图片描述

  4. 限制数量
    在这里插入图片描述

xrange stream start-id end-id [count n] 是XRANGE命令的逆序版本,除了会按照ID从大到小而不是从小到大的顺序访问流元素之外,其他作用是相同的


6. xread

xread [block ms] [count n] streams stream1 stream2...id1 id2...

  • 只能从一个方向对流进行迭代
  • 支持同时对多个流进行迭代
  • 能够以阻塞和非阻塞两种方式执行
  1. 从多个流中获取大于指定id的元素
    在这里插入图片描述在这里插入图片描述

  2. 阻塞

    xread [block ms] [count n] streams stream1 stream2...id1 id2...

    有一个或多个流拥有符合条件、可供读取的元素,那么XREAD命令将直接返回这些元素而不会进入阻塞状态
    在这里插入图片描述
    在这里插入图片描述

  3. 获取新的元素

将$符号用作ID参数的值,XREAD命令就会只获取给定流在命令执行之后新出现的元素
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CodePanda@GPF

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值