栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis 流技术

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis 流技术

Redis 流技术

目录

Redis 流技术

What

Redis 流ID规则

Redis 消息结构

Demo

How


What

Redis Stream 是 Redis 5.0 版本新增加的数据结构。

Redis Stream 主要用于消息队列(MQ,Message Queue),Redis 本身是有一个 Redis 发布订阅 (pub/sub) 来实现消息队列的功能,但它有 个缺点就是消息无法持久化,如果出现网络断开、Redis 宕机等,消息就会被丢弃。

简单来说发布订阅 (pub/sub) 可以分发消息,但无法记录历史消息。而 Redis Stream 提供了消息的持久化和主备复制功能,可以让任何客户

端访问任何时刻的数据,并且能记住每一个客户端的访问位置,还能保证消息不丢失。

Redis 流ID规则

流(stream)中信息条目(一个 Stream 条目,由一个或多个键值对组成的)的 ID 必须是单调增的,为此,redis 采用时间戳+自增 id 这种方式 来保证,并且这两个数都是 64bit,不会有溢出问题,最后一点,redis 在增加信息条目时会检查当前 id 与上一条目的 id,自动纠正错误的情况, 一定要保证后面的 id 比前面大。

一个流中信息条目的 ID 必须是单调增的,这是流的基础

几个特殊的 ID:

- + :最小和最大可能出现的 Id

$ :当前流中最大的 id,可用于将要到来的信息

> :用于 XREADGROUP 命令中,表示迄今还没有发送给组中使用者的信息,会更新消费者组的最后 ID

* :用于 XADD 命令中,让系统自动生成 id

Redis 消息结构

Consumer Group:消费组,使用 XGROUP CREATE 命令创建,一个消费组有多个消费者(Consumer)。

last_delivered_id:游标,每个消费组会有个 last_delivered_id,任意一个消费者读取了消息都会使游标 last_delivered_id 往前移动。

pending_ids:消费者(Consumer)的状态变量,作用是维护消费者的未确认的 id。pending_ids 记录了当前已经被客户端读取的消息,但是还没 有 ack (Acknowledge character:确认字符)。

Demo

xadd mystream * id 1 name longge #生产消息

xdel mystream 1654521221581-0 #删除某条消息

xrange mystream - + #查看消息列表

XREAD count 1 streams mystream 0 #读取一条消息

xgroup create mystream group1 0 #创建消费者组

xreadgroup group group1 c1 count 1 streams mystream > #消费者读消息

xpending stream1 group1 - + 10 c1 #查看待确认的列表

XACK mystream group1 1654522733049-0 #确认消息

How

XADD - 添加消息到末尾

XTRIM - 对流进行修剪,限制长度

XDEL - 删除消息

XLEN - 获取流包含的元素数量,即消息长度

XRANGE - 获取消息列表,会自动过滤已经删除的消息

XREVRANGE - 反向获取消息列表,ID 从大到小

XREAD - 以阻塞或非阻塞方式获取消息列表

XGROUP CREATE - 创建消费者组

XACK - 将消息标记为"已处理"

XGROUP SETID - 为消费者组设置新的最后递送消息 ID

XGROUP DELCONSUMER - 删除消费者

XGROUP DESTROY - 删除消费者组

XPENDING - 显示待处理消息的相关信息

XCLAIM - 转移消息的归属权

XINFO - 查看流和消费者组的相关信息

XREADGROUP GROUP - 读取消费者组中的消息

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1039374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号