2016-11-30 11 views
3

私はRedisに複数のキーを設定すると私は同じ時間に時間を期限切れに設定することはできませんRORでredisクライアントを使用するときに有効期限を設定するにはどうすればよいですか?

redis.mapped_mset({ "f1" => "v1", "f2" => "v2" }) 

を使用しようとしています。私は何度も呼び出す必要があり、これは私が見たいものではありません

set(key, value, options = {}) 

または

expire(key, seconds) 

:これを使用するには時間が期限切れに設定する 唯一の方法。 この問題を解決する他の方法はありますか?

答えて

3

Redis自身有効期限パラメータを使用した複数の設定。 Redis#mapped_setは、msetを呼び出す構文糖であり、mset自体は、トランザクション後にsetを何回も呼び出す構文糖です。

したがって、set(... ex:...)の後続のコールをRedis#multiのトランザクションにラップするだけで済みます。

+0

あなたの答えをありがとう! – neo

+0

しかし、私はこれらのセット操作が同じトランザクションにあるかどうかは気にしません。これは、Redis#multiを使用せずに別々に呼び出すことができるということですか? – neo

+0

'mapped_mset'に相当するものを期限切れで要求しました。 'mapped_mset'は、トランザクションされたアトミック操作です。それが原子的であることを望まないなら、 'multi 'を使わずに呼び出します。 – mudasobwa

0

ラッパーメソッドを記述すると、リストを設定して有効期限を追加できます。 redis.multiを使用して、trasactionalモジュールにラップします。

def set_list(list, expire_in = 10) 
    redis.multi do 
    list.each{ |k, v| redis.set(k,v, ex: expire_in)} 
    end 
end 
関連する問題