我在学习卢阿。下面给出的是用于处理某些操作的Lua脚本。
local function reverseDb ()
local key = KEYS[1]
local value = ARGV[1]
redis.call('SREM',key,value)
return value
end
if pcall(reverseDb) then
print("success")
else
print("error")
redis.call('SADD',key,value)
end
在运行时,它会引发一个错误:
Script attempted to access nonexistent global variable 'print' script: 39f13cb3bddd638c815531acbc2dc6434a0329c6, on @user_script:17.
我不明白为什么会有错误。有线索吗?
发布于 2022-10-11 02:49:58
Redis在沙箱上下文中运行Lua脚本,并限制全局变量的使用,只允许部分全局变量/函数。显然,print
是不允许的。
在这种情况下,您可以返回错误消息而不是打印它。
if pcall(reverseDb) then
return "success"
else
redis.call('SADD',key,value)
return "error"
end
https://stackoverflow.com/questions/74014510
复制相似问题