2015-07-22 2 views
0

Я перехожу из ehcache в redis. В ehcache используется метод по умолчанию для установки времени простоя (setTimeToIdle() not setTimeToLive()) для ключа. Есть ли такой же эквивалент, чтобы установить время простоя в redis? Если бы какая-либо работа не была такой же? Заранее спасибоМиграция с ehcache на redis: эквивалент ehcache setTimeToIdle() в redis

ответ

0

В Redis нет такой команды, вы можете установить время для жизни. Но вы можете сделать легкое обходное решение, вам нужно будет использовать 2 команды, сначала установите новый ttl, а затем верните ключ. И вы хотите, чтобы эти 2 команды были атомарными, поэтому вы можете использовать сценарий lua или транзакцию (с MULTI http://redis.io/commands/multi).
Вот пример Lua скрипт, который проверяет, существует ли «ключ», если да устанавливает истекает 10 секунд и возвращает значение, в противном случае возвращает -1:

local redis_key = redis.call('get', 'key') 
if redis_key then 
    redis.call('expire', 'key', '10') 
    return redis_key 
end 
return -1 

Вам нужно будет нажать такой сценарий для повторного использования с использованием http://redis.io/commands/eval