#ХранениеИRedis • 01 ноября 2026 • Автор: NettyCore

Безопасная кросс-серверная синхронизация инвентарей и экономики через Redis Locks

1. Почему наивная запись в SQL при выходе с сервера приводит к дюпам

Когда игрок переходит через Velocity с одной ноды на другую (`anarchy-1` → `duels-1`), сервер назначения начинает загрузку профиля одновременно с тем, как исходный сервер сохраняет инвентарь на диск. Без распределённой блокировки новый сервер может прочитать устаревший снимок до завершения транзакции сохранения.

2. Атомарная блокировка профиля (Distributed Lock) в Redis

Наш плагин XMC-SyncBridge захватывает ключ блокировки xmc:lock:player:<uuid> с TTL 3 000 мс. Пока исходная нода не сериализует `ItemStack[]` в бинарный Zstd-блоб и не опубликует событие SYNC_COMMIT в канал Redis Pub/Sub, целевая нода удерживает вход игрока на этапе конфигурации Velocity.

Пример состояния ключа синхронизации в Redis
HSET xmc:profile:550e8400-e29b-41d4-a716-446655440000 \
  version 418 \
  rubies 2840 \
  elo 1945 \
  last_node "duels-1" \
  commit_ts "2026-11-13T16:38:12Z"

Читайте также: