EVAL
语法
EVAL script numkeys [key [key ...]] [arg [arg ...]]
- 可用版本
- Redis 开源版 2.6.0
- 时间复杂度
- 取决于执行的脚本。
- ACL 类别
-
@slow
,@scripting
,
调用服务器端 Lua 脚本的执行。
第一个参数是脚本的源代码。脚本使用 Lua 编写,并通过 Redis 中嵌入的 Lua 5.1 解释器执行。
第二个参数是输入键名参数的数量,后跟脚本访问的所有键。这些输入键的名称作为 KEYS 全局运行时变量 对脚本可用。任何额外的输入参数不应表示键名。
重要提示:为确保脚本在独立部署和集群部署中都能正确执行,脚本访问的所有键名都必须明确作为输入键参数提供。脚本只能访问作为输入参数提供的键。脚本永远不应通过程序生成名称或根据数据库中存储的数据结构内容来访问键。
注意:在某些情况下,用户会滥用 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"