Redis Operation Binding v0.1.0
The Redis operation binding defines how AsyncAPI operations (publish and subscribe) are implemented over the Redis pub/sub protocol. This binding configures how messages are sent and received using Redis channels and commands.
Overview
Redis operation bindings configure the behavior of publish and subscribe operations within the Redis pub/sub messaging system. Operations define how messages flow between publishers and subscribers using Redis's simple and efficient pub/sub protocol.
Operation Properties
Property | Type | Required | Description |
---|---|---|---|
bindingVersion | string | No | Binding version (defaults to 0.1.0 ) |
Property Details
Binding Version
Specifies the version of the Redis operation binding being used.
Default: 0.1.0
Note: This is the only property currently defined in the Redis operation binding schema. The binding is designed to be minimal and focused on the core Redis pub/sub capabilities.
Redis Operation Concepts
Publish Operations
Publish operations in Redis represent sending messages to channels:
- PUBLISH Command: Used to send messages to specific Redis channels
- Channel Routing: Messages are broadcast to all subscribers of the channel
- No Persistence: Messages are not stored and are lost if no subscribers are active
- Simple Protocol: Straightforward command structure for message publishing
Subscribe Operations
Subscribe operations in Redis represent receiving messages from channels:
- SUBSCRIBE Command: Used to listen to messages on specific channels
- Pattern Subscriptions: PSUBSCRIBE for wildcard channel patterns
- No Acknowledgment: No confirmation of message receipt
- Real-time Delivery: Messages delivered immediately to active subscribers
Redis Commands
Redis operations use these main commands:
- PUBLISH: Send message to a channel
- SUBSCRIBE: Listen to messages on a channel
- PSUBSCRIBE: Subscribe to channels matching a pattern
- UNSUBSCRIBE: Stop listening to channels
- PUNSUBSCRIBE: Stop listening to pattern subscriptions
Examples
Basic Operation Configuration
operations:
sendMessage:
bindings:
redis:
bindingVersion: '0.1.0'
Publish Operation
operations:
publishEvent:
action: publish
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/UserEvent'
Subscribe Operation
operations:
subscribeToEvents:
action: subscribe
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/UserEvent'
Bidirectional Chat Operations
channels:
chatChannel:
publish:
operationId: sendChatMessage
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/ChatMessage'
subscribe:
operationId: receiveChatMessage
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/ChatMessage'
System Event Broadcasting
channels:
systemEvents:
publish:
operationId: broadcastSystemEvent
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/SystemEvent'
subscribe:
operationId: receiveSystemEvent
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/SystemEvent'
IoT Device Communication
channels:
deviceChannel:
publish:
operationId: sendDeviceCommand
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/DeviceCommand'
subscribe:
operationId: receiveDeviceStatus
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/DeviceStatus'
Real-Time Notifications
channels:
notifications:
publish:
operationId: sendNotification
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/Notification'
subscribe:
operationId: receiveNotification
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/Notification'
Use Cases
Real-Time News Broadcasting
channels:
newsChannel:
publish:
operationId: publishNews
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/NewsUpdate'
subscribe:
operationId: receiveNews
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/NewsUpdate'
Live Dashboard Updates
channels:
dashboardChannel:
publish:
operationId: sendUpdate
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/DashboardUpdate'
subscribe:
operationId: receiveUpdate
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/DashboardUpdate'
User Activity Tracking
channels:
userActivity:
publish:
operationId: trackActivity
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/UserActivity'
subscribe:
operationId: monitorActivity
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/UserActivity'
Sensor Data Streaming
channels:
sensorData:
publish:
operationId: streamSensorData
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/SensorData'
subscribe:
operationId: processSensorData
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/SensorData'
Best Practices
Message Operations
- Use appropriate channel names for your use case
- Implement proper error handling for failed operations
- Handle connection failures gracefully
- Consider message size and frequency
Connection Management
- Implement proper connection lifecycle handling
- Use connection pooling for high-throughput applications
- Handle reconnection scenarios gracefully
- Monitor connection health and performance
Performance Optimization
- Use appropriate message sizes
- Implement connection pooling
- Monitor operation performance and throughput
- Consider channel partitioning for high-volume scenarios
Security Considerations
- Use secure Redis connections (Redis over SSL/TLS)
- Implement proper authentication and authorization
- Validate all message content
- Protect against common messaging vulnerabilities
Error Handling
- Implement proper error handling for failed operations
- Handle connection failures gracefully
- Log operation failures for debugging
- Implement retry mechanisms when appropriate
Subscription Management
- Use unique subscription identifiers for tracking
- Implement proper subscription cleanup
- Handle subscription failures gracefully
- Monitor subscription health and performance
Redis Command Examples
PUBLISH Command (Publish)
PUBLISH user:events '{"userId": "123", "event": "login", "timestamp": "2023-01-01T12:00:00Z"}'
SUBSCRIBE Command (Subscribe)
SUBSCRIBE user:events
PSUBSCRIBE Command (Pattern Subscribe)
PSUBSCRIBE user:*
UNSUBSCRIBE Command
UNSUBSCRIBE user:events
PUNSUBSCRIBE Command
PUNSUBSCRIBE user:*
Operation Patterns
Simple Pub/Sub
channels:
simpleChannel:
publish:
operationId: publish
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/SimpleMessage'
subscribe:
operationId: subscribe
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/SimpleMessage'
Pattern-Based Subscriptions
channels:
patternChannel:
publish:
operationId: publishToPattern
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/PatternMessage'
subscribe:
operationId: subscribeToPattern
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/PatternMessage'
Multi-Channel Operations
channels:
multiChannel:
publish:
operationId: publishToMultiple
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/MultiChannelMessage'
subscribe:
operationId: subscribeToMultiple
bindings:
redis:
bindingVersion: '0.1.0'
message:
$ref: '#/components/messages/MultiChannelMessage'
Changelog
Version 0.1.0
- Initial release with basic Redis operation binding support
- Support for publish and subscribe operations
- Minimal configuration focused on core Redis capabilities
- Schema validation for binding version