Сценарий Lua был бы самым мощным подходом - см. Документацию EVAL
для получения дополнительной информации о том, как составлять такие сценарии, и обратитесь к SCRIPT LOAD
и EVALSHA
за их запуск.
Что-то вроде следующего примера должно вас исправить:
if tonumber(redis.call('TTL', KEYS[1])) < 1 then
redis.call('EXPIRE', KEYS[1], ARGV[1])
end