在Redis中设置Hashmap值的到期时间?

时间:2013-11-29 14:15:46

标签: redis

如何设置Redis中的哈希映射到期,就像我使用SETX对常规值一样。 我想为我存储hasmap的会话提供TTL。 我可以使用SETEX本身创建一个Hashmap吗?

1 个答案:

答案 0 :(得分:9)

不,你不能用SETEX创建哈希(这是一个字符串方法)。您可以在哈希键上调用EXPIRE,但这将使整个哈希值到期。目前不支持单个散列键/值对的到期。

更新

如果您想在设置其各个元素时设置整个哈希的到期时间,您可以通过多种方式实现此目的。

  1. 使用流水线。流水线操作是一种特殊的操作模式,其中redis客户端快速连续发出多个命令,而不是等待回复发送下一个命令。这是ruby中的一个例子:

    redis.pipelined do
      redis.hset "foo", "bar", 1
      redis.expire "foo", 300
    end
    
  2. 使用交易。没有监视密钥,这类似于流水线(对于事务不能中止)。保证命令以原子方式一起运行(多个管道可以交错运行,事务被序列化)

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