Redis Bridge Plugin
Redis Bridge Plugin is a bridge plugin for MQTT message and Redis integration. This plugin supports real-time storage of MQTT messages to Redis SortedSet, can configure multiple Redis instances, supports database selection and password authentication. Messages are stored using timestamps as scores, supporting custom message encoding formats.
Main Features
Section titled "Main Features"- Support configuration of multiple Redis instances
- Support Redis database selection
- Support Redis password authentication
- Support custom message encoding formats
- Use timestamp as SortedSet score
- Real-time message storage
Configuration Instructions
Section titled "Configuration Instructions"Plugin uses YAML format for configuration, main configuration parameters are as follows:
redis: - address: "localhost:6379" # Redis server address and port database: 0 # Redis database number (0-15) password: "your_password" # Redis access password (optional) encode: "STRING" # Message encoding format (default: STRING) - address: "redis2:6379" # Can configure multiple Redis instances database: 1 password: "password2"Configuration Parameter Description
Section titled "Configuration Parameter Description"address: Redis server address, format is “host:port”database: Redis database number, range 0-15password: Redis server access password, can be omitted if no password is setencode: Message encoding format, defaults to “STRING”, supports multiple encoding methods
Usage Scenarios
Section titled "Usage Scenarios"- MQTT message persistent storage
- Message history query service
- Message data analysis and statistics
- Real-time data monitoring system
- Ensure Redis server address is configured correctly and accessible
- Avoid duplicate configuration of the same Redis address
- Recommend choosing appropriate message encoding format based on actual needs
- Pay attention to monitoring Redis storage capacity, clean up historical data timely
Workflow Diagram
Section titled "Workflow Diagram"Message Bridge Swimlane Diagram
Section titled "Message Bridge Swimlane Diagram"sequenceDiagram
autonumber
participant Client as MQTT Publisher
participant Broker as MQTT Broker
participant Bridge as Redis Bridge Plugin
participant Subscribers as MQTT Subscribers
participant Redis as Redis Instance Cluster
%% MQTT message reception
rect rgb(230, 245, 255)
Note over Client,Subscribers: MQTT Message Flow
Client->>Broker: 1. PUBLISH message<br/>(topic: sensors/temp)
Broker->>Broker: 2. Topic matching check
par Normal message routing
Broker->>Subscribers: 3a. Forward to subscribers
and Trigger bridge
Broker->>Bridge: 3b. Trigger Redis bridge<br/>(matching topic rules)
end
end
%% Message processing and encoding
rect rgb(255, 245, 230)
Note over Bridge,Redis: Bridge Message Processing
Bridge->>Bridge: 4. Extract message content<br/>(topic + payload + timestamp)
Bridge->>Bridge: 5. Format conversion
alt encode=STRING
Bridge->>Bridge: String encoding
else encode=JSON
Bridge->>Bridge: JSON serialization
else encode=HEX
Bridge->>Bridge: Hexadecimal encoding
end
Bridge->>Bridge: 6. Generate SortedSet Key<br/>(format: mqtt:topic)
Bridge->>Bridge: 7. Get timestamp<br/>(as SortedSet score)
end
%% Redis write
rect rgb(255, 255, 230)
Note over Bridge,Redis: Parallel Write to Redis Cluster
par Concurrent write to multiple instances
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. Storage confirmation response
end
Bridge->>Broker: 10. Bridge processing complete
Note over Client,Redis: Message simultaneously completes<br/>MQTT routing + Redis persistence
Flow Description
Section titled "Flow Description"- Message Capture: Intercept MQTT messages matching specified Topic rules
- Format Conversion: Encode messages according to configured encode parameter
- Timestamp Marking: Use current time as SortedSet score
- Multi-instance Write: Asynchronously parallel write to all configured Redis instances
- Ordered Storage: Utilize Redis SortedSet feature to achieve time-ordered message storage