- 用法
-
EVAL script numkeys [ key ] [ [ key ] ... ] [ arg ] [ [ arg ] ... ]
- 复杂度
- 取决于执行的脚本。
- 自
- 2.6.0
- ACL 类别
- @scripting, @slow
调用执行服务器端 Lua 脚本。
第一个参数是脚本的源代码。脚本用 Lua 编写,由 Valkey 中嵌入的 Lua 5.1 解释器执行。
第二个参数是输入键名参数的数量,后跟脚本访问的所有键。这些输入键名作为 KEYS 全局运行时变量 对脚本可用。任何额外的输入参数不应表示键名。
重要提示:为确保脚本在独立部署和集群部署中的正确执行,脚本访问的所有键名必须作为输入键参数显式提供。脚本应只访问其名称作为输入参数提供的键。脚本绝不应访问通过程序生成名称的键,或基于数据库中存储的数据结构内容访问键。
注意:在某些情况下,用户会滥用 Lua EVAL,将值嵌入脚本而不是作为参数提供,从而在每次调用 EVAL 时生成不同的脚本。这些脚本被添加到 Lua 解释器并缓存到 Valkey 服务器,随着时间的推移会消耗大量内存。从 Valkey 8.0 开始,使用 EVAL
或 EVAL_RO
加载的脚本在达到一定数量后(按最近最少使用顺序)将从 Valkey 中删除。被逐出脚本的数量可以通过 INFO
的 evicted_scripts
查看。
有关 Lua 脚本的更多信息,请参阅Valkey 可编程性和Eval 脚本简介。
示例
以下示例将运行一个脚本,该脚本返回其获得的第一个参数。
> EVAL "return ARGV[1]" 0 hello
"hello"
RESP2/RESP3 回复
返回值取决于执行的脚本。