Redis: атомный и условный набор - PullRequest
0 голосов
/ 12 мая 2018

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

Возможно ли это сделать с помощью Redis?

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

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

В итоге я использовал redlock-py , реализацию алгоритма redlock, рекомендованную Redis docs для создания блокировок записи: https://redis.io/topics/distlock. Связанная статья - фантастическое чтение для всех, кто хочет создать похожие замки записи в Redis.

0 голосов
/ 13 мая 2018

Вы можете выполнять операции GET и set на самом сервере Redis, используя Lua scripts .Они атомарны и позволяют вам добавлять логику.

...