Эквивалент SETEX для GET и TTL

SETEX полезная команда Redis, с помощью которой можно установить value а также expiry ключа в одной атомарной операции.

Есть ли эквивалентная операция, которая атомарно позволяет человеку получить ключ value а также ttl? Я знаю, что могу сделать это и в конвейере, но я спрашиваю: SETEX существует. Если это имеет значение, я использую Redis 2.8.4.

2 ответа

Решение

AFAIK, нет такой команды. Тем не менее, вы можете обернуть GET а также TTL в скрипт Lua, чтобы получить и значение, и значение ttl за один атомарный вызов.

Кроме того, вы не можете достичь этого с конвейером. Потому что Redis НЕ гарантирует, что команды в конвейере выполняются атомарно.

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

Вы можете сослаться на Redis Transaction и конвейеризацию для более подробной информации.

Другие вопросы по тегам