Redis键是否会在Lua脚本的两条命令间过期?两次exists结果是否不同?
Redis Lua脚本中键过期与命令一致性问题
一、Redis键会在Lua脚本的两条命令之间过期吗?
不会。Redis的Lua脚本是原子执行的——整个脚本执行期间,Redis服务器不会处理其他客户端的请求,也不会触发键的过期删除操作(过期键的清理要么在命令执行间隙处理,要么由后台线程异步处理,而脚本执行时会阻塞这些操作)。所以在脚本内部的多条命令执行间隙,目标键的过期状态不会发生变化。
二、两次exists调用的返回值v0和v1是否可能不同?
不可能。基于Lua脚本的原子性特性,从脚本开始执行到结束的整个过程中,目标键的存在状态不会被任何外部操作或过期机制修改。因此你给出的代码中,v0和v1的返回值必然完全一致。
对应的代码示例:
local v0 = redis.call('exists', KEY); local v1 = redis.call('exists', KEY);
内容的提问来源于stack exchange,提问作者someonewhoisajavadeveloper
相关产品推荐
相关产品推荐

