Class RedisPubSubExtension

java.lang.Object
net.carcdr.yhocuspocus.redis.RedisPubSubExtension
All Implemented Interfaces:
net.carcdr.yhocuspocus.extension.Extension

public class RedisPubSubExtension extends Object implements net.carcdr.yhocuspocus.extension.Extension
Redis extension for horizontal scaling using pub/sub.

This extension synchronizes document updates across multiple server instances using Redis pub/sub. When a document is modified on one instance, the update is published to Redis and received by all other instances subscribed to that document's channel.

Usage:


 RedisClient redisClient = new LettuceRedisClient("localhost", 6379);
 RedisExtensionConfig config = RedisExtensionConfig.builder()
     .prefix("myapp")
     .instanceId("instance-1")
     .build();

 RedisPubSubExtension extension = new RedisPubSubExtension(config, redisClient);

 YHocuspocus server = YHocuspocus.builder()
     .extension(extension)
     .build();
 

Key behaviors:

  • Subscribes to document channel when document is loaded
  • Publishes updates to Redis when document changes locally
  • Applies updates from other instances to local document
  • Filters out self-published messages to avoid duplicate application
  • Unsubscribes from channel when document is unloaded
See Also: