【问题标题】:Redis Lua scripts are atomic in relation to keyspace notifications?Redis Lua 脚本与键空间通知有关吗?
【发布时间】:2016-12-02 23:25:30
【问题描述】:

我有一个带有 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,“脚本的原子性”),但我不确定这也适用于过期事件。

谢谢

【问题讨论】:

  • 有趣的问题。我认为这归结为到期过程是否使用用于服务请求的同一线程。我的猜测是确实如此。

标签: lua redis stackexchange.redis


【解决方案1】:

是的,有可能是因为Redis在访问key的时候会检查TTL。

此外,强烈建议不要使用一般情况下的 KEYS 命令,特别是来自 Lua 脚本的命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-06-04
    • 2019-03-13
    • 1970-01-01
    • 1970-01-01
    • 2020-11-08
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多