考虑我在redis中有一个非常大的数据记录(键值),其TTL是根据一些业务规则设置的(也存储在redis中),让我们说如果业务规则改变了,因为记录不应该在之前设置的时间过期,但应该根据新的时间过期。每次规则更新时,我不能简单地更改数百万条记录的生存时间。我怎样才能做到这一点呢?在redis中是否有一种方法,允许我们提供一个脚本,当它在满足TTL时删除记录时运行。
Redis支持LUA脚本。也许你应该检查一下。
https://redis.io/commands/eval/
EVAL:执行Lua脚本
EVALSHA:执行Lua脚本。缓存的
SCRIPT EXISTS:通过hash检查脚本缓存
SCRIPT FLUSH: Clear cache
SCRIPT KILL:终止正在运行的脚本
SCRIPT LOAD:加载指定的Lua脚本到脚本缓存中。
redis 127.0.0.1:6379> EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1
key2 first second
1) "key1"
2) "key2"
3) "first"
4) "second"