В Redis под секционированием понимается разделение данных на несколько экземпляров. Это означает, что каждый Redis содержит часть всего вашего набора данных. Это удобная функция, особенно при работе с большими наборами данных.
Давайте рассмотрим различные типы секционирования в Redis, а также стоимость и преимущества каждого из них.
Типы разделов Redis
В Redis есть два механизма разделения:
Разделение по рангу
Лучший способ объяснить разделение — использовать аналогию. Предположим, у вас есть четыре экземпляра Redis: R0, R1, R2 и R3. Кроме того, предположим, что вам нужно хранить ключи в формате user:[id].
Вы можете использовать разбиение по диапазонам, чтобы разделить данные на доступные экземпляры Redis.
При разбиении по диапазонам вы сопоставляете раздел своих данных с конкретным экземпляром. Например, вы можете взять ключи от пользователя: [id<0> – id<1000>] и сопоставить их с экземпляром R0. Экземпляр r1 может содержать подмножество ключей пользователя [id<1001> – id<2000>] и так далее.
Это самая простая и наиболее применимая форма разбиения в Redis. Тем не менее, это дает ограничение.
Для секционирования диапазона требуется таблица, которая сопоставляет определенный диапазон с соответствующим ему кластером.
Таблица сопоставления требует управления и применения для каждого секционированного типа данных.
Разбиение хэша
Второй альтернативой разбиению по диапазону является разбиение по хешу. Redis использует функцию хеширования для преобразования ключа в число в этом методе разделения.
Например, если у нас есть ключ «fact», мы можем преобразовать его в число, используя функцию хэширования, такую как CRC-16.
Это должно вернуть число как fact.
Затем Redis применяет к числу операцию по модулю и возвращает результат от 0 до 3.
Например:
8167 % 2
Приведенная выше операция должна вернуть 1. Затем Redis использует это значение, чтобы определить, в каком кластере должен храниться ключ. В нашем примере ключ «fact» хранится в экземпляре R1.
Преимущества разделения.
- Разделение позволяет нескольким экземплярам совместно использовать память и хранить данные.
- Разрешить масштабирование вычислительной мощности.
Недостатки разделения
- Многоклавишная операция не поддерживается.
- Вы не можете выполнить транзакцию Redis, используя несколько ключей.
- Вносит двусмысленность при работе с настойчивостью.
- Сокращение или увеличение данных оказывается трудным.
Заключение
В этой статье вы узнали о различных механизмах разделения Redis. Ознакомьтесь с документацией, чтобы узнать больше.