我正在尝试使用
redis.mapped_mset({ "f1" => "v1", "f2" => "v2" })
将多个密钥设置为Redis
,我无法同时设置过期时间。
设置过期时间的唯一方法是使用它:
set(key, value, options = {})
或
expire(key, seconds)
我必须多次打电话,这不是我想看到的。 还有其他方法可以解决这个问题吗?
答案 0 :(得分:4)
Redis本身does not support多个设置,带有过期参数。 Redis#mapped_set
是一种用于调用mset
的语法糖,而mset
本身是一种语法糖,可以多次在事务上调用后续set
。
因此,您唯一需要的是将set(... ex:...)
的后续调用包装到Redis#multi
的事务中。
答案 1 :(得分:1)
您可以编写包装器方法来设置列表并添加过期时间。使用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