Skip to content

Redis 桥接插件

This content is not available in your language yet.

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"
  • address: Redis服务器地址,格式为 “host:port”
  • database: Redis数据库编号,范围0-15
  • password: Redis服务器访问密码,如果没有设置密码可以省略
  • encode: 消息编码格式,默认为”STRING”,支持多种编码方式
  1. MQTT消息持久化存储
  2. 消息历史查询服务
  3. 消息数据分析和统计
  4. 实时数据监控系统
  1. 确保Redis服务器地址配置正确且可访问
  2. 避免重复配置相同的Redis地址
  3. 建议根据实际需求选择合适的消息编码格式
  4. 注意监控Redis存储容量,适时清理历史数据
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持久化
  1. 消息捕获: 拦截匹配指定Topic规则的MQTT消息
  2. 格式转换: 根据配置的encode参数对消息进行编码
  3. 时间戳标记: 使用当前时间作为SortedSet的分数(score)
  4. 多实例写入: 异步并行写入所有配置的Redis实例
  5. 有序存储: 利用Redis SortedSet特性实现按时间排序的消息存储