2016-04-26 11 views
1

RedisにはアトムGET + EXPIREコマンドがありますか?これはスライディング有効期限の値として機能します:キーで指定された値を取得しようとした後、のキーが見つかった場合にのみ、X秒間の生存時間を設定します。RedisアトミックGETおよびEXPIRE

答えて

3

いいえ、ありませんが、MULTI/EXECブロックまたはLuaスクリプトを使用して2つのコマンドを1つずつ送信することを妨げるものはありません。存在しないキーにEXPIREを使用すると、何も行われません。

0

それとも、私は簡単なのLuaスクリプトを使用します。Golangで

local val, err = redis.pcall('GET', KEYS[1]) 
if err then 
    return err 
end 
redis.call('EXPIRE', KEYS[1], ARGV[1]) 
return {val} 

あなたが行うことができます:

import "github.com/go-redis/redis" 

const lua = ` 
local val, err = redis.pcall('GET', KEYS[1]) 
if err then 
    return err 
end 
redis.call('EXPIRE', KEYS[1], ARGV[1]) 
return {val} 
    ` 

redisGetEx = redis.NewScript(lua) 
result, err = redisGetEx.Run(redisClient, []string{"key"}, 1800).Result() 
関連する問題