English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Разделение - это процесс разделения данных на множество примеров Redis, поэтому каждый пример сохраняет только подмножество ключей.
Использование суммы памяти множества компьютеров позволяет нам создавать более крупные базы данных.
Использование множества ядер и компьютеров позволяет нам расширять вычислительную мощность; использование множества компьютеров и сетевых адаптеров позволяет нам расширять полосу пропускания сети.
Некоторые функции Redis не очень хорошо работают в разделе:
Операции,涉及的多个 ключи, обычно не поддерживаются. Например, если два набора данных set направлены на разные примеры Redis, вы не можете выполнять операцию пересечения для этих двух наборов данных.
Транзакции,涉及的 ключи Redis, не могут быть использованы.
При использовании разделения обработка данных может быть сложной, например, вам нужно обрабатывать несколько файлов rdb/aof и сохранять файлы сохранения из нескольких примеров и узлов.
Увеличение или уменьшение объема также может быть сложным. Большинство кластеров Redis поддерживают функцию прозрачного балансировки данных при добавлении и удалении узлов в процессе работы, но такие системы, как клиентское разделение, прокси и другие, не поддерживают эту функцию. Однако, технология presharding может помочь в этом.
Redis имеет два типа партилизации. Предположим, что у нас есть 4 примера Redis R0, R1, R2, R3 и множество ключей, таких как user:1, user:2, и различные способы выбора, где именно этот ключ будет храниться. То есть, существуют различные системы для mapping ключа к определенному Redis-сервису.
Самый простой метод партилизации - это партилизация по диапазону, которая означает mapping объектов определенного диапазона к определенному примеру Redis.
Например, пользователи с ID от 0 до 10000 будут сохранены в примере R0, пользователи с ID от 10001 до 20000 будут сохранены в R1 и так далее.
Этот метод возможен и используется на практике, но недостаток в том, что нужно иметь таблицу соответствия интервала к примерам. Эта таблица должна быть управляема, а также таблицы соответствия для различных объектов, что не всегда является хорошим методом для Redis.
Другой метод партилизации - это хэш-партилизация. Это подходит для любого ключа и не требует формы object_name: как описано ниже:
Используйте хеш-функцию для преобразования ключа в число, например, используя хеш-функцию crc32. Выполнение crc32(foobar) выведет целое число, например, 93024922.
Для этого числа используем модуляцию, чтобы преобразовать его в число от 0 до 3, и можно будетemapить это число к одному из четырех примеров Redis. 93024922 % 4 = 2, что означает, что ключ foobar должен быть сохранен в примере R2. Обратите внимание: операция модуляции это остаток от деления, обычно реализуется оператором % в множестве языков программирования.