несколько клиентов могут одновременно получать доступ к одному и тому же списку, не блокируясь в Redis? - PullRequest
4 голосов
/ 29 февраля 2012

Предположим, что есть два клиента, которые обращаются к одной и той же структуре данных списка повторов.Один выполняет LPOP, а другой - RPUSH в том же списке.Будет ли конфликт между этими двумя клиентами, если они работают параллельно?Будет ли Redis блокировать mylist (ниже), когда к нему обращается один клиент, даже если клиенты, работающие параллельно, обращаются к разным концам mylist?

Client 1
RPUSH mylist a
RPUSH mylist b

Client 2
LPOP mylist
LPOP mylist

Клиент 1 и Клиент 2 работают параллельно.Дайте мне знать, если в таком сценарии будут разногласия.

Ответы [ 2 ]

6 голосов
/ 29 февраля 2012

Redis является однопоточным, поэтому каждая команда, которая приходит к нему (гарантированно будет выполнена), выполняется атомарно.Параллельный / параллельный доступ к структурам данных Redis отсутствует, поэтому в вашем сценарии вы не можете сказать, кто будет выполняться первым.

0 голосов
/ 29 февраля 2012

один не будет блокировать другой, если вы не используете MULTI / EXEC для создания транзакции, чтобы избежать условий гонки, когда один клиент POPS до того, как другой клиент заканчивает, принимает значения N PUSH.

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