为什么Lua脚本会阻止Redis服务器?

我有一个简单的Lua脚本:

while ( i < 500000 ) do

redis.call("zadd", 'test1', i, i)

redis.call( "expire", 'test1', 600 )

i = i + 1

end

local res = redis.call("zrange", "test1", 0, 500000 )

for k,a in pairs(res) do

redis.call("zadd", 'test2',k,a)

end

为什么此脚本阻止Redis服务器?如果我在另一个控制台命令中运行,例如:设置测试1,结果:

 BUSY Redis is busy running a script. You can only call SCRIPT KILL or SHUTDOWN NOSAVE.

回答:

Redis是单线程的。每个命令都会阻止它。EVAL也是命令,因此它会阻止redis。

以上是 为什么Lua脚本会阻止Redis服务器? 的全部内容, 来源链接: utcz.com/qa/406759.html

回到顶部