我如何像对待常规值一样在Redis中为哈希表设置过期时间,使用SETEX进行设置。
我想为一个会话提供TTL,而我正在存储一个哈希表。我能否使用SETEX来创建哈希表?
我如何像对待常规值一样在Redis中为哈希表设置过期时间,使用SETEX进行设置。
我想为一个会话提供TTL,而我正在存储一个哈希表。我能否使用SETEX来创建哈希表?
不,你不能使用字符串方法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脚本来实现定制的HSETEX命令。它将以原子方式执行,您只需发送一个命令(而不是2个(流水线)或4个(事务)命令)。