在Redis中为Hashmap值设置过期时间?

5

我如何像对待常规值一样在Redis中为哈希表设置过期时间,使用SETEX进行设置。

我想为一个会话提供TTL,而我正在存储一个哈希表。我能否使用SETEX来创建哈希表?

1个回答

12

不,你不能使用字符串方法SETEX创建哈希。你可以在哈希键上调用EXPIRE,但这将使整个哈希过期。目前没有支持单独哈希键/值对过期的功能。

更新:

如果您想在设置哈希的个别元素时为整个哈希设置过期时间,有几种方法可以实现。

  1. 使用流水线传输。流水线传输是一种特殊的操作模式,Redis客户端会快速连续发出多条命令,而不等待答复就发送下一条命令。以下是Ruby示例:

    redis.pipelined do
      redis.hset "foo", "bar", 1
      redis.expire "foo", 300
    end
    
  2. 使用事务。如果没有监视键,这类似于流水线操作(因为事务无法中止) 。保证命令一起并且原子地运行(多个流水线可以交错运行,事务则串行执行)

  3. redis.multi do
      redis.hset "foo", "bar", 1
      redis.expire "foo", 300
    end
    
  4. 使用Lua脚本来实现定制的HSETEX命令。它将以原子方式执行,您只需发送一个命令(而不是2个(流水线)或4个(事务)命令)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接