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