如何设置Redis中的哈希映射到期,就像我使用SETX对常规值一样。 我想为我存储hasmap的会话提供TTL。 我可以使用SETEX本身创建一个Hashmap吗?
答案 0 :(得分:9)
不,你不能用SETEX
创建哈希(这是一个字符串方法)。您可以在哈希键上调用EXPIRE
,但这将使整个哈希值到期。目前不支持单个散列键/值对的到期。
如果您想在设置其各个元素时设置整个哈希的到期时间,您可以通过多种方式实现此目的。
使用流水线。流水线操作是一种特殊的操作模式,其中redis客户端快速连续发出多个命令,而不是等待回复发送下一个命令。这是ruby中的一个例子:
redis.pipelined do
redis.hset "foo", "bar", 1
redis.expire "foo", 300
end
使用交易。没有监视密钥,这类似于流水线(对于事务不能中止)。保证命令以原子方式一起运行(多个管道可以交错运行,事务被序列化)
redis.multi do
redis.hset "foo", "bar", 1
redis.expire "foo", 300
end
使用lua scripting实现自定义HSETEX命令。它将以原子方式执行,您只需发送一个命令(而不是2(流水线)或4(事务))。