Redis 桥接插件
Redis Bridge Plugin 是一个用于MQTT消息与Redis集成的桥接插件。该插件支持将MQTT消息实时存储到Redis的SortedSet中,可配置多个Redis实例,支持数据库选择和密码认证。消息存储时使用时间戳作为分数,支持自定义消息编码格式。
- 支持配置多个Redis实例
- 支持Redis数据库选择
- 支持Redis密码认证
- 支持自定义消息编码格式
- 使用时间戳作为SortedSet分数
- 实时消息存储
插件使用YAML格式进行配置,主要配置参数如下:
redis: - address: "localhost:6379" # Redis服务器地址和端口 database: 0 # Redis数据库编号(0-15) password: "your_password" # Redis访问密码(可选) encode: "STRING" # 消息编码格式(默认:STRING) - address: "redis2:6379" # 可配置多个Redis实例 database: 1 password: "password2"配置参数说明
Section titled “配置参数说明”address: Redis服务器地址,格式为 “host:port”database: Redis数据库编号,范围0-15password: Redis服务器访问密码,如果没有设置密码可以省略encode: 消息编码格式,默认为”STRING”,支持多种编码方式
- MQTT消息持久化存储
- 消息历史查询服务
- 消息数据分析和统计
- 实时数据监控系统
- 确保Redis服务器地址配置正确且可访问
- 避免重复配置相同的Redis地址
- 建议根据实际需求选择合适的消息编码格式
- 注意监控Redis存储容量,适时清理历史数据
消息桥接泳道图
Section titled “消息桥接泳道图”sequenceDiagram
autonumber
participant Client as MQTT发布者
participant Broker as MQTT Broker
participant Bridge as Redis桥接插件
participant Subscribers as MQTT订阅者
participant Redis as Redis实例集群
%% MQTT消息接收
rect rgb(230, 245, 255)
Note over Client,Subscribers: MQTT消息流转
Client->>Broker: 1. PUBLISH 消息<br/>(topic: sensors/temp)
Broker->>Broker: 2. Topic匹配检查
par 正常消息路由
Broker->>Subscribers: 3a. 转发给订阅者
and 触发桥接
Broker->>Bridge: 3b. 触发Redis桥接<br/>(匹配topic规则)
end
end
%% 消息处理与编码
rect rgb(255, 245, 230)
Note over Bridge,Redis: 桥接消息处理
Bridge->>Bridge: 4. 提取消息内容<br/>(topic + payload + timestamp)
Bridge->>Bridge: 5. 格式转换
alt encode=STRING
Bridge->>Bridge: 字符串编码
else encode=JSON
Bridge->>Bridge: JSON序列化
else encode=HEX
Bridge->>Bridge: 十六进制编码
end
Bridge->>Bridge: 6. 生成SortedSet Key<br/>(格式: mqtt:topic)
Bridge->>Bridge: 7. 获取时间戳<br/>(作为SortedSet score)
end
%% Redis写入
rect rgb(255, 255, 230)
Note over Bridge,Redis: 并行写入Redis集群
par 并发写入多实例
Bridge->>Redis: 8a. ZADD mqtt:sensors/temp<br/>score=timestamp value=message
and
Bridge->>Redis: 8b. ZADD mqtt:sensors/temp<br/>score=timestamp value=message
and
Bridge->>Redis: 8c. ZADD mqtt:sensors/temp<br/>score=timestamp value=message
end
Redis-->>Bridge: 9. 存储确认响应
end
Bridge->>Broker: 10. 桥接处理完成
Note over Client,Redis: 消息同时完成<br/>MQTT路由 + Redis持久化
- 消息捕获: 拦截匹配指定Topic规则的MQTT消息
- 格式转换: 根据配置的encode参数对消息进行编码
- 时间戳标记: 使用当前时间作为SortedSet的分数(score)
- 多实例写入: 异步并行写入所有配置的Redis实例
- 有序存储: 利用Redis SortedSet特性实现按时间排序的消息存储