脚本命令
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 并从数据库中执行相应的脚本。