文章目录
1.pub/sub2.streamstream的几个关键概念消息队列相关命令消费者组相关命令
1.pub/sub
publish与subscribe用于消息的发布和订阅 订阅者需先订阅该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 为消费者组设置新的最后递送消息IDXGROUP DELCONSUMER 删除消费者XGROUP DESTROY 删除消费者组XPENDING 显示待处理消息的相关信息XCLAIM 转移消息的归属权XINFO 查看流和消费者组的相关信息XINFO GROUPS 打印消费者组的信息XINFO STREAM 打印流信息
stream的命令完整演示说明:《基于Redis的Stream类型的完美消息队列解决方案》