В 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. Ознакомьтесь с документацией, чтобы узнать больше.