Redis Lua 脚本在键空间通知方面是原子的吗?

我有一个带有键的 TTL 的数据库。 我还有一个定期运行的脚本,将所有键的 TTL 重置为其默认值(这里为 20 秒):

local matches = redis.call('KEYS', '*') for _,key in ipairs(matches) do redis.call('SETEX', key, 20, -1) end

我的问题是 - 当上述脚本运行时,是否可能到期键。

我知道 Lua 脚本是原子的(http://redis.io/commands/EVAL,"脚本的原子性"),但我不确定这是否也适用于到期事件。

谢谢

点赞
用户3160475
用户3160475

是的,这是可能的,因为Redis在访问密钥时会检查TTL。

此外,通常情况下,强烈不建议使用KEYS命令,特别是从Lua脚本中使用。

2016-07-28 15:52:02