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

Спасибо!Redis replication and redis sharding (cluster) difference

ответ

102

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

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.

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

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

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

+6

прохладный. Я думаю, что ответ не ограничивается только redis – joetsuihk

+3

Хороший ответ (в общем), но на самом деле не отвечает на вопрос imho :) –

+2

Я думаю, что этот ответ дает хороший ответ на то, что задавал вопрос. Очень упрощенное, но правильное объяснение. +1 –

14

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

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^