redis的消息订阅pub/sub与stream

本文深入探讨Redis的Stream数据结构,它提供消息持久化和主从复制功能,类似于Kafka。讲解了关键概念如ConsumerGroup、Last_delivered_id和Pending ids,并列举了消息队列和消费者组的相关命令,如XADD、XGROUPCREATE和XACK。通过实例展示了如何使用Redis Stream实现高效的消息处理和管理。
摘要由CSDN通过智能技术生成

1.pub/sub

publish与subscribe用于消息的发布和订阅
pub/sub
订阅者需先订阅该channel,然后发布者再发布消息。puslish命令的返回值为订阅者数量。
psubscribe可以支持通配符:

psubscribe sport*   #可以订阅所有sport开头的channel

2.stream

stream也是redis的消息队列,但它可以实现消息持久化,可以主从复制,可以记录消费者的消费位置,也就是说它更像kafka。
stream结构示意图:
在这里插入图片描述

stream的几个关键概念

  • Consumer Group
    消费者组名,类似kafka中的消费者组。 不同组之间互不影响。
  • Last_delivered_id
    类似kafka中的游标
  • Pending ids
    维护消费者未被确认的消息,也就是还未被ACK的id
  • 消息id格式
    XADD生成的1553439850328-0,就是Redis生成的消息ID,由两部分组成:时间戳-序号。时间戳是毫秒级单位,是生成消息的Redis服务器时间,它是个64位整型(int64)。序号是在这个毫秒时间点内的消息序号,它也是个64位整型

消息队列相关命令

  • XADD 添加消息到队列尾部
  • XTRIM 对流进行修建,限制长度
  • XDEL 删除消息
  • XLEN 获取流包含的元素数量
  • XRANGE 获取消息列表
  • XREVRANGE 反向获取消息列表
  • XREAD 以阻塞或者非阻塞方式获取消息列表

消费者组相关命令

  • XGROUP CREATE 创建消费者组
  • XREADGROUP GROUP 读取消费者组中的消息
  • XACK 将消息标记为已处理
  • XGROUP SETID 为消费者组设置新的最后递送消息ID
  • XGROUP DELCONSUMER 删除消费者
  • XGROUP DESTROY 删除消费者组
  • XPENDING 显示待处理消息的相关信息
  • XCLAIM 转移消息的归属权
  • XINFO 查看流和消费者组的相关信息
  • XINFO GROUPS 打印消费者组的信息
  • XINFO STREAM 打印流信息

stream的命令完整演示说明:《基于Redis的Stream类型的完美消息队列解决方案》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值