EVAL
语法
EVAL script numkeys [key [key ...]] [arg [arg ...]]
- 可用版本
- 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"