Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Lua 到期时自动移动redis键_Lua_Redis - Fatal编程技术网

Lua 到期时自动移动redis键

Lua 到期时自动移动redis键,lua,redis,Lua,Redis,有没有一种方法可以在redis密钥过期时自动将其从一个地方移动到另一个地方?在客户机中,可以通过收到redis expire通知来实现这一点,但是如果触发通知时没有客户机正在运行,则会错过事件 但是如果有一种方法可以在服务器上执行(可能通过LUA脚本),那么它可以是原子的,并且密钥在过期之前存在于一个位置,过期之后存在于另一个位置。LUA脚本不能由密钥空间通知触发。 您必须在客户端执行此操作。密钥过期时不会触发过期密钥空间通知。这并不能保证会像你预期的那样发生。。。() 当通过命令访问密钥并发

有没有一种方法可以在redis密钥过期时自动将其从一个地方移动到另一个地方?在客户机中,可以通过收到redis expire通知来实现这一点,但是如果触发通知时没有客户机正在运行,则会错过事件


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

LUA脚本不能由密钥空间通知触发。
您必须在客户端执行此操作。

密钥过期时不会触发过期密钥空间通知。这并不能保证会像你预期的那样发生。。。()

  • 当通过命令访问密钥并发现密钥已过期时
  • 通过后台系统,在后台以增量方式查找过期的密钥,以便能够收集从未过期的密钥 访问
我认为你应该采取另一种方法。使用一些外部任务计划程序,并自动启动任务,在过期密钥即将过期前几秒或几分钟移动它们。我知道您将使用
ttl
命令检查目标密钥是否仍然有效

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