zoukankan      html  css  js  c++  java
  • redis 学习

    一、Redis Streams

    xadd:添加消息
    xread:消费消息
    xdel:删除消息
    xgroup:消费组管理
    xreadgroup:分组消费
    xrange: 获取没有删除标识的消息列表
    xlen:获取整个Stream的消息长度
    del:删除整个Stream的消息
    xdel:删除消息
    xpending: 查看未处理消息
    xack:确认消息已经被处理
    xclaim:转移消息
    xinfo:查看队列信息
    xtrim:消息队列容量
    xrevrange:逆序获取消息队列中的消息

    xadd

    添加消息,可以把数据添加到流的redis命令,id是增量的,可以使用maxlen来限制流大小,但是会有一些性能损失,但如果在后面加个~来使他高效一些,*代表采用内部生成的id

    xadd stream [MAXLEN ~ count][id][field value][field value]

     1、每一组消息需要一个唯一的Id,*号表示服务器自动生成ID,后面顺序跟着一组或者多组消息(filed value)

     2、消息ID的形式是timestampInMillis-sequence,例如1527846880572-5,它表示当前的消息在毫米时间戳1527846880572时产生,并且是该毫秒内产生的第5条消息

    消息ID可以由服务器自动生成,也可以由客户端自己指定,但是形式必须是整数-整数,而且必须是后面加入的消息的ID要大于前面的消息ID

    3、消息元素的的结构为key-value,必须成对出现,如果key或者value元素中有空格,必须用"abc  def"或者'abc  def'括起来

    示例

    xadd mystream * who me when now what person;
    xadd mystream maxlen 1000 * name 1;
    xadd mystream maxlen ~ 1000 * name 2;

    如图

     效果如下:

    也可以自己指定EntryID的值,如:

    XADD somestream 0-1 field value

    如下:

    xread

    使用 XREAD 以阻塞或非阻塞方式获取消息列表 ,语法格式:

    XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] id [id ...]
    • count :数量
    • milliseconds :可选,阻塞毫秒数,没有设置就是非阻塞模式
    • key :队列名
    • id :消息 ID
    xread count 2 streams Master 0-0

    如图

     续...

    客户端1中执行以下操作

    XREAD BLOCK 0 STREAMS Master $

    注意,无光标,它将进入等待状态。

    你向客户端2添加元素:

    XADD Master * test 1

    刚添加的元素将显示在客户端1中:

     显示结果

     续...

    xdel

    代表删除消息,可以接多个id

    xdel mystream 1600608058992-0

    如图:

    如下

    xlen

    返回流中的条目数,如果键不存在或流为空,返回0

    xlen mystream

    如图:

    xrange

    要根据范围查询Stream,我们只需要提供两个ID,即start 和 end。返回的区间数据将会包括ID是start和end的元素,因此区间是完全包含的。两个特殊的ID- 和 +分别表示可能的最小ID和最大ID。

    xrange Master - +

    可以只取前两个 

    xrange Master - + COUNT 2

     如图:

    起始指定为- +表示查询所有的,相应的可以把这两个换成时间,例如取某个时间段的

    XRANGE Master 1610333414346 1610333809575

    如图:

     二、消费组

    当流的数量非常大时, 或者当使用者处理非常耗时时, 如果只有一个使用者, 它将承受更大的压力。因此, redis流提供了使用者组的概念, 从而允许多个使用者处理同一个流以实现负载平衡。

      

  • 相关阅读:
    ATM项目分析
    Python常用模块大全
    一文了解@Conditional注解说明和使用
    Spring IOC源码分析之-刷新前的准备工作
    Spring Cloud Zuul API服务网关之请求路由
    ArrayList相关方法介绍及源码分析
    记一次序列化的JSON解析问题
    大型网站架构演化发展历程
    Spring Cloud Ribbon负载均衡
    Spring Cloud Hystrix 服务容错保护
  • 原文地址:https://www.cnblogs.com/fger/p/14261278.html
Copyright © 2011-2022 走看看