Мне нужно BRPOP
, а затем добавить полученное значение в отсортированный набор с помощью ZADD
. Я вижу два решения для этого (я использую Ruby):
- Напишите сценарий Lua, который выполняет эти две операции. Однако скрипты Lua не могут блокироваться, так как тем временем они будут удерживать весь сервер. Так что это решение не работает;
- Используйте блок
multi { ... }
redis-rb
. Однако здесь я не могу использовать значение popped в командеZADD
, так какredis-rb
не реализует этот блок.
С ними у меня остался только неатомарный способ добиться этого, то есть использовать redis-rb
для последовательного запуска этих команд. Однако мне действительно нужна атомарность здесь. Каким был бы способ добиться этого?