EVAL

用法
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 开始,使用 EVALEVAL_RO 加载的脚本在达到一定数量后(按最近最少使用顺序)将从 Valkey 中删除。被逐出脚本的数量可以通过 INFOevicted_scripts 查看。

有关 Lua 脚本的更多信息,请参阅Valkey 可编程性Eval 脚本简介

示例

以下示例将运行一个脚本,该脚本返回其获得的第一个参数。

> EVAL "return ARGV[1]" 0 hello
"hello"

RESP2/RESP3 回复

返回值取决于执行的脚本。