Redis进阶
Redis Stream消息队列
Redis Stream 是 Redis 5.0 版本新增加的数据结构。 Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。 简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息。 而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。  下面对上图涉及的专有名词做简单解释: - Stream direction:表示数据流,它是一个消息链,将所有的消息都串起来,每个消息都有一个唯一标识 ID 和对应的消息内容(Message content)。 - Consumer Group :表示消费组,拥有唯一的组名,使用 XGROUP CREATE 命令创建。一个 Stream 消息链上可以有多个消费组,一个消费组内拥有多个消费者,每一个消费者也有一个唯一的 ID 标识。 - last_delivered_id :表示消费组游标,每个消费组都会有一个游标 last_delivered_id,任意一个消费者读取了消息都会使游标 last_delivered_id 往前移动。 - pending_ids :Redis 官方称为 PEL,表示消费者的状态变量,它记录了当前已经被客户端读取的消息 ID,但是这些消息没有被 ACK(确认字符)。如果客户端没有 ACK,那么这个变量中的消息 ID 会越来越多,一旦被某个消息被 ACK,它就开始减少。 ### 消息队列相关命令: - xadd - 添加消息到末尾 - xtrim - 对流进行修剪,限制长度 - xdel - 删除消息 - xlen - 获取流包含的元素数量,即消息长度 - xrange - 获取消息列表,会自动过滤已经删除的消息 - xrevrange - 反向获取消息列表,id 从大到小 - xread - 以阻塞或非阻塞方式获取消息列表 ### 消费者组相关命令: - xgroup create - 创建消费者组 - xreadgroup group - 读取消费者组中的消息 - xack - 将消息标记为"已处理" - xgroup setid - 为消费者组设置新的最后递送消息id - xgroup delconsumer - 删除消费者 - xgroup destroy - 删除消费者组 - xpending - 显示待处理消息的相关信息 - xclaim - 转移消息的归属权 - xinfo - 查看流和消费者组的相关信息; - xinfo groups - 打印消费者组的信息; - xinfo stream - 打印流信息
顶部
收展
底部
[TOC]
目录
Redis bitmap位图操作
Redis HyperLoglog基数统计
Redis PubSub发布订阅
Redis Stream消息队列
Redis 布隆过滤器
Redis 分区技术
Redis Pipeline管道技术
Redis RDB持久化
Redis AOF持久化
Redis Cluster主从模式
Redis Sentinel哨兵模式
Redis 三种缓存问题
Redis 大 key优化
相关推荐
Redis教程
Redis命令
Redis面试题总结
PHP 操作Redis