评估
Syntax
EVAL script numkeys [key [key ...]] [arg [arg ...]]
- Available since:
- 2.6.0
- Time complexity:
- Depends on the script that is executed.
- ACL categories:
-
@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
查看。
请参考Redis Programmability和Introduction to Eval Scripts以获取有关Lua脚本的更多信息。
示例
以下示例将运行一个脚本,该脚本返回它接收到的第一个参数。
> EVAL "return ARGV[1]" 0 hello
"hello"