Репликация Redis и разница в сегментировании (кластере) Redis

StackOverflow https://stackoverflow.com/questions/2139443

  •  22-09-2019
  •  | 
  •  

Вопрос

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

Спасибо!

Это было полезно?

Решение

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

Шардинг, также известный как секционирование, представляет собой разделение данных по ключу;Репликация, также известная как зеркалирование, заключается в копировании всех данных.

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

Предположим, у вас есть следующие кортежи:[1:Яблоко], [2:Банан], [3:Вишня], [4:Дуриан] и у нас есть две машины A и B.С помощью шардинга мы могли бы хранить ключи 2,4 на машине А;и клавиши 1,3 на машине Б.При репликации мы храним ключи 1,2,3,4 на машине А и 1,2,3,4 на машине Б.

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

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

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

Другие советы

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

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

Что касается вашего третьего вопроса, вместо опции очистки ОЗУ лучше использовать Redis Append Only File (AOF).При небольших затратах (с точки зрения скорости записи) вы получаете гораздо большую надежность записи.Это очень похоже на двоичный журнал MySQL.Рекомендуемым вариантом является 1 частота синхронизации в секунду.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top