Я прочитал документ с сайта Redis, и вот как он описывает шардинг:
'
В Redis Cluster есть 16384 слотов хэша, и для вычисления того, что такое слот хешаданный ключ, мы просто берем CRC16 ключа по модулю 16384.
Каждый узел в кластере Redis отвечает за подмножество слотов хэша, поэтому, например, у вас может быть кластер с 3 узлами, где:
Узел A содержит слоты хеш-функции от 0 до 5500. Узел B содержит слоты хеш-функции от 5501 до 11000. Узел C содержит слоты хеш-функции от 11001 до 16383. Это позволяет легко добавлять и удалять узлы в кластере. Например, если я хочу добавить новый узел D, мне нужно переместить некоторый слот хеша из узлов A, B, C в D. Аналогично, если я хочу удалить узел A из кластера, я могу просто переместитьслоты хэша, обслуживаемые от A до B и C. Когда узел A будет пуст, я могу полностью удалить его из кластера.
'
Прежде всего, яВыделил то, что смущает меня. При добавлении узла redis требует переустановить существующие ключи в A, B, C и распределить их в A, B, C, D.
Как работает эта операция перераспределения? Кажется, это не так просто, особенно, когда сервисы все еще работают. Ваше действие шардинга не должно влиять на текущую работу.