Redis - Разделение
Разделение - это процесс разделения ваших данных на несколько экземпляров Redis, так что каждый экземпляр будет содержать только подмножество ваших ключей.
Преимущества разметки
Это позволяет создавать базы данных гораздо большего размера, используя сумму памяти многих компьютеров. Без разделения вы ограничены объемом памяти, который может поддерживать один компьютер.
Это позволяет масштабировать вычислительную мощность до нескольких ядер и нескольких компьютеров, а пропускную способность сети - до нескольких компьютеров и сетевых адаптеров.
Недостатки разбиения на разделы
Операции с несколькими ключами обычно не поддерживаются. Например, вы не можете выполнить пересечение двух наборов, если они хранятся в ключах, сопоставленных с разными экземплярами Redis.
Транзакции Redis с несколькими ключами использовать нельзя.
Гранулят разделения является ключевым, поэтому невозможно сегментировать набор данных одним огромным ключом, как очень большой отсортированный набор.
При использовании разделения обработка данных усложняется. Например, вам необходимо обрабатывать несколько файлов RDB / AOF, а для получения резервной копии ваших данных вам необходимо агрегировать файлы сохраняемости с нескольких экземпляров и хостов.
Добавление и удаление емкости может быть сложной задачей. Например, Redis Cluster поддерживает в основном прозрачную перебалансировку данных с возможностью добавления и удаления узлов во время выполнения. Однако другие системы, такие как клиентские разделы и прокси, не поддерживают эту функцию. Техника называетсяPresharding помогает в этом отношении.
Типы разбиения
В Redis доступно два типа разделения. Предположим, у нас есть четыре экземпляра Redis, R0, R1, R2, R3 и множество ключей, представляющих таких пользователей, как user: 1, user: 2, ... и так далее.
Разделение диапазона
Разделение диапазона выполняется путем сопоставления диапазонов объектов с конкретными экземплярами Redis. Предположим, что в нашем примере пользователи от ID 0 до ID 10000 войдут в экземпляр R0, а пользователи с ID 10001 до ID 20000 войдут в экземпляр R1 и так далее.
Разбиение хэша
В этом типе разбиения используется хеш-функция (например, функция модуля) для преобразования ключа в число, а затем данные сохраняются в разных экземплярах Redis.