Вопрос по – Блокировка и редис

9

У нас есть 75 (и растущих) серверов, которые должны обмениваться данными через Redis. Все 75 серверов в идеале хотели бы писать в два поля в Redis сINCRBYFLOAT операции. Мы ожидаем, что в конечном итоге потенциально миллионы ежедневных операций записи иbillions ежедневных чтений на этих двух полях. Эти данныеmust будь настойчивым.

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

Вопросы:

Is multiple, simultaneous INCRBYFLOAT on a single field a bad idea under a very heavy load? Should we have an external process "summarize" separate fields and write the two fields instead? (this introduces another failure point) Will reads on those two fields block while writing?

Ваш Ответ

2   ответа
13

так что нет условий гонки. Чтение или запись не блокируют.

Вы можете запустить миллионыINCRBYFLOAT на том же ключе без проблем. Нет необходимости во внешних процессах. Чтение этих полей не представляет никаких проблем.

Тем не менее, "Миллионы обновлений двух ключей" звучит странно. Если вы можете объяснить ваш вариант использования, возможно, есть лучший способ справиться с ним в Redis.

Error: User Rate Limit Exceeded Ovid
Error: User Rate Limit Exceededredis.io/topics/benchmarksError: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Ovid
5

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

В качестве альтернативы вы можете рассмотреть возможность использованияApache Zookeeper для этого он обеспечивает надежную координацию кластера без единой точки отказа (например, одного экземпляра Redis).

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Ovid
Error: User Rate Limit Exceeded

Похожие вопросы