Redis Cluster и горячие ключи: как шардируется кэш и что делать с перекосом?
Redis Cluster делит пространство ключей на 16384 слотов, каждый узел владеет диапазоном слотов; слот вычисляется как CRC16 от ключа. Отсюда два практических следствия. Первое — операции над несколькими ключами работают только внутри одного слота, поэтому связанные ключи собирают в один слот хеш-тегом: {user:42}:profile и {user:42}:settings попадут вместе, так как для слота берётся только часть в фигурных скобках. Второе — горячий ключ невозможно размазать шардированием: он лежит в одном слоте на одном узле, и весь трафик по нему бьёт в один процесс. Лечится это не кластером, а приёмами уровня приложения: локальный кэш процесса перед Redis, дробление ключа на N копий со случайным выбором, вынос счётчиков в отдельные ключи по сегментам. Диагностика — redis-cli --hotkeys, метрики по узлам и CLUSTER COUNTKEYSINSLOT.