从redis客户端运行Lua脚本时出错

inv*_*ble 1 lua redis

我有 Lua 脚本的“Hello World”程序。我正在尝试从(Chocolatey)Redis 客户端调用脚本。我不断收到此错误(错误) ERR 编译脚本(新函数)时出错:user_script:1:函数参数预期在“。”附近

Redis 脚本:“hello.lua”

local msg = "Hello, world!"
return msg
Run Code Online (Sandbox Code Playgroud)

巧克力 Redis 客户端:

127.0.0.1:6379> EVAL "D:\hello.lua" 0
Run Code Online (Sandbox Code Playgroud)

错误信息

(error) ERR Error compiling script (new function): user_script:1: function argument expected near '.'
Run Code Online (Sandbox Code Playgroud)

Ita*_*ber 6

EVAL接受脚本本身,而不是文件名。

尝试这个:

EVAL 'local msg = "Hello, world!" return msg' 0
Run Code Online (Sandbox Code Playgroud)

编辑:要执行文件中的脚本,redis-cli提供了--eval可以使用的开关,如下所示:

redis-cli --eval <path-to-script-file> [key1 [key2] ...] , [arg1 [arg2] ...]
Run Code Online (Sandbox Code Playgroud)

我不熟悉 Windows 分支,但它很可能也支持它。

在*nix中,还可以使用shell将脚本的内容提供给cli,例如:

redis-cli SCRIPT LOAD "$(cat path-to-script-file)"
Run Code Online (Sandbox Code Playgroud)

会将文件中的内容加载到 Redis。在 Windows 中应该有类似的方法来实现这一点,但这超出了我当前的范围;)