Redis идемпотентно устанавливает ttl для ключа

Я пытаюсь использовать конвейеры для обработки сотен тысяч ключей, которые постоянно добавляются в базу данных Redis.

Есть ли в Redis идемпотентный метод установки ttl, если он не существует для ключа?


person Jonathan    schedule 24.05.2018    source источник


Ответы (1)


Сценарий Lua был бы наиболее эффективным подходом — см. EVAL документацию для получения более подробной информации о том, как составлять такие сценарии. , и обратитесь к SCRIPT LOAD и EVALSHA за их выполнение.

Что-то вроде следующего примера должно исправить вас:

if tonumber(redis.call('TTL', KEYS[1])) < 1 then
  redis.call('EXPIRE', KEYS[1], ARGV[1])
end
person Itamar Haber    schedule 24.05.2018