脚本命令

Redis 提供了七种不同的操作来处理脚本:

  • 评估操作(EVAL, EVALSHA)
  • SCRIPT 操作(DEBUG, EXISTS, FLUSH, KILL, LOAD)

EVAL 命令评估作为服务器的字符串参数提供的脚本。脚本可以访问指定为命令参数的指定 Redis 键以及用户要传递给脚本的其他字符串参数。

例如,命令:

EVAL "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}" 2 key1 key2 first second

导致执行用户定义的 Lua 脚本,该脚本只返回提供的值。该调用涉及 2 个 Redis 键(key1 和 key2)和两个参数。

执行 Lua 脚本的另一种方法是首先将其加载到数据库中,然后使用脚本的 SHA 哈希执行它:

> script load "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}"
"a42059b356c875f0717db19a51f6aaca9ae659ea"
> evalsha "a42059b356c875f0717db19a51f6aaca9ae659ea" 2 key1 key2 foo bar
1) "key1"
2) "key2"
3) "foo"
4) "bar"

script load 命令加载脚本并将其存储在数据库中。返回脚本的 sha 签名,以便将来的调用可以引用它。EVALSHA 函数接受 sha 并从数据库中执行相应的脚本。