Redis Replication Question - PullRequest
       8

Redis Replication Question

1 голос
/ 12 июля 2011

Я планирую использовать Redis в своем приложении для хранения и кэширования.Я читаю большую часть документации в Интернете, но у меня все еще есть вопрос относительно репликации.

Мой сценарий использования:

  • Приложение панели мониторинга: пишет и читает из redis (экземпляр Master redis)

  • Несколько экземпляров другого приложения, которое запускает Redis-клиенты и выполняет только чтение.

  • Клиенты реплицируются с главного устройства через каждые X минут.

Вопрос: - Я понимаю, что когда клиенты выполняют репликацию, они блокируются для операций.Но блокируется ли операция чтения?

  • Если чтение также заблокировано, какой будет хороший подход для его преодоления, поскольку я хочу иметь возможность выполнять чтение без каких-либо блоков.

Заранее признателен за помощь!

1 Ответ

1 голос
/ 13 июля 2011

Это не совсем то, что говорит в документах , на самом деле оно говорит:

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

и

Если вы устанавливаете подчиненное устройство, при подключении отправляет команду SYNC. И не имеет значения, подключился ли он в первый раз или переподключен.

Таким образом, при нормальной работе он вообще не должен блокироваться на ведомых устройствах. НО чтения заблокированы во время начальной синхронизации.

Вы можете видеть, синхронизируется ли он в настоящее время с командой info; master_sync_in_progress: 0

Репликация работает, сначала отправив все (блоки) Затем он отправляет инкрементные обновления (неблокирующие, поскольку это «просто» выполненные команды, изменяющие набор данных, в правильном порядке)

Вы можете преодолеть его, только подключившись к другому экземпляру Redis, может быть, к мастеру в качестве запасного варианта?

...