Редис репликации и редис шардинг (кластер) разница - PullRequest
43 голосов
/ 26 января 2010
  1. Кто-нибудь знает разницу между репликацией redis и разделением redis?
  2. Для чего они используются? Redis хранит данные в памяти, как это влияет на репликацию / разбиение?
  3. Можно ли использовать их обоих вместе?

Спасибо!

Ответы [ 2 ]

119 голосов
/ 24 февраля 2010

Осколок является почти полной противоположностью репликации, хотя они являются ортогональными понятиями и хорошо работают вместе.

Sharding, также известный как разделение, разделяет данные по ключам; В то время как репликация, также известная как зеркальное отображение, должна копировать все данные.

Sharding полезен для повышения производительности, уменьшения попадания и загрузки памяти на любом ресурсе. Репликация полезна для высокой доступности операций чтения. Если вы читаете из нескольких реплик, вы также уменьшите частоту обращений ко всем ресурсам, но требования к памяти для всех ресурсов останутся прежними. Следует отметить, что, хотя вы можете писать на ведомое устройство, репликация является только master-> slave. Таким образом, вы не можете масштабировать записи таким образом.

Предположим, у вас есть следующие кортежи: [1: Apple], [2: Banana], [3: Cherry], [4: Durian], и у нас есть две машины A и B. При использовании Sharding мы можем хранить ключи 2 , 4 на машине А; и ключи 1,3 на машине B. При репликации мы храним ключи 1,2,3,4 на машине A и 1,2,3,4 на машине B.

Sharding обычно реализуется путем выполнения согласованного хэша для ключа. Приведенный выше пример был реализован с помощью следующей хеш-функции h (x) {return x% 2 == 0? A: B}.

Чтобы объединить понятия, мы могли бы повторить каждый осколок. В вышеупомянутых случаях все данные (2,4) машины A могут быть реплицированы на машине C, а все данные (1,3) машины B могут быть реплицированы на машине D.

Любое хранилище значений ключей (из которых Redis является только одним примером) поддерживает разделение, хотя некоторые функции перекрестных ключей больше не будут работать. Redis поддерживает репликацию из коробки.

19 голосов
/ 09 ноября 2010

Проще говоря, принципиальное различие между этими двумя понятиями заключается в том, что Sharding используется для масштабирования операций записи, а репликация - для масштабирования операций чтения. Как уже упоминал Алекс, Replication также является одним из решений для достижения высокой доступности.

Да, они оба обычно используются вместе, если учесть, как сегменты могут быть реплицированы на узлы в кластере.

Что касается вашего третьего вопроса, вместо опции сброса RAM лучше использовать Redis Append Only File (AOF). Всего лишь за небольшую плату (с точки зрения скорости записи) вы получаете гораздо большую надежность своих записей. Это очень похоже на двоичный журнал mysql. Рекомендуемая опция: 1 fsync / second.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...