在到期时以原子方式移动redis密钥

时间:2016-11-05 15:48:36

标签: lua redis

有没有办法在redis键到期时从一个地方自动移动到另一个地方?通过收到redis过期通知的通知,可以在客户端执行此操作,但如果在触发通知时没有客户端正在运行,则会错过该事件。

但如果有办法在服务器上执行(可能是通过LUA脚本),那么它可以是原子的,密钥在到期前存在于一个地方,到期后存在于另一个地方。

2 个答案:

答案 0 :(得分:1)

密钥过期时不会触发过期密钥空间通知。它不能保证按照您的预期发生......(see Timing of expired events

  
      
  • 当命令访问密钥并且发现它已过期时。
  •   
  • 通过后台系统在后台逐步查找过期的密钥,以便能够收集从不的密钥   访问。
  •   
恕我直言,我相信你应该采用另一种方法。使用一些外部任务调度程序并自动启动任务,以便在它们即将到期之前的几秒或几分钟内移动过期的密钥。我知道您将使用ttl命令检查目标密钥是否仍然存在。

对我来说,密钥过期是一种自动释放内存的好方法,但是你不应该使用它来根据过期事件产生动作,因为它对于这样的用例是不可靠的。

答案 1 :(得分:0)

密钥空间通知无法触发Lua脚本。 你必须在客户端这样做。