我想加载一个脚本到redis,将导出函数,未来执行的脚本将依赖于,但试图定义全局函数失败,同样适用于全局变量:
redis 127.0.0.1:6379> EVAL "function alex() return 3.1415 end" 0
(error) ERR Error running script (call to f_f24a5a054d91ccc74c2629e113f8f639bbedbfa2): user_script:1: Script attempted to create global variable 'alex'
如何定义全局函数和变量?
2条答案
按热度按时间zte4gxcn1#
查看文件scripting.c中的源代码
scriptingEnableGlobalsProtection
的文档字符串表明其意图是通知脚本作者常见的错误(不使用local
)。看起来这不是安全功能,所以我们有两个解决方案:
可以解除这种保护:
或者使用
rawset
:yqkkidmi2#
你可以将你定义的函数赋给一个var,并通过var名称调用,例如:
这种方式对我来说很好,即使是在3.x版本的redis上。