有没有办法在redis键到期时从一个地方自动移动到另一个地方?通过收到redis过期通知的通知,可以在客户端执行此操作,但如果在触发通知时没有客户端正在运行,则会错过该事件。
但如果有办法在服务器上执行(可能是通过LUA脚本),那么它可以是原子的,密钥在到期前存在于一个地方,到期后存在于另一个地方。
答案 0 :(得分:1)
密钥过期时不会触发过期密钥空间通知。它不能保证按照您的预期发生......(see Timing of expired events)
恕我直言,我相信你应该采用另一种方法。使用一些外部任务调度程序并自动启动任务,以便在它们即将到期之前的几秒或几分钟内移动过期的密钥。我知道您将使用
- 当命令访问密钥并且发现它已过期时。
- 通过后台系统在后台逐步查找过期的密钥,以便能够收集从不的密钥 访问。
ttl
命令检查目标密钥是否仍然存在。
对我来说,密钥过期是一种自动释放内存的好方法,但是你不应该使用它来根据过期事件产生动作,因为它对于这样的用例是不可靠的。
答案 1 :(得分:0)
密钥空间通知无法触发Lua脚本。 你必须在客户端这样做。