EVALSHA sha1 numkeys key [key ...] arg [arg ...]

Execute a Lua script server side

EVALSHA 命令与 EVAL 命令非常相似,都可以用于在 Redis 服务器端运行 Lua 脚本。不同的是,EVALSHA 命令需要提供一个已经预先计算好的 Lua 脚本的 SHA1 值,而不是直接提供 Lua 脚本本身。

EVALSHA 命令的基本语法如下:

EVALSHA sha1 numkeys key [key ...] arg [arg ...]

参数说明:

sha1:需要运行的 Lua 脚本的 SHA1 值。
numkeys:键的数量,即脚本所需要的参数数量。
key [key ...]:作为参数传递给 Lua 脚本的键名。
arg [arg ...]:作为参数传递给 Lua 脚本的参数。

EVALSHA 命令的工作方式如下:

  1. Redis 接收到 EVALSHA 命令后,会检查 sha1 参数指定的 Lua 脚本是否已经被缓存。
  2. 如果 Lua 脚本已经被缓存,则 Redis 直接运行该脚本。
  3. 如果 Lua 脚本没有被缓存,则 Redis 返回一个错误信息。
  4. 如果脚本存在语法错误或执行出错,则 Redis 会返回一个错误信息。
  5. 如果脚本执行成功,则 Redis 会返回脚本的执行结果。

与 EVAL 命令相比,EVALSHA 命令更加安全,可以避免由于网络攻击等原因导致的 Lua 脚本被篡改的问题。此外,由于已经缓存的 Lua 脚本不需要再次传输到 Redis 服务器,因此 EVALSHA 命令的执行速度也比 EVAL 命令更快。但是需要注意的是,由于 SHA1 值的计算开销比较大,因此如果需要频繁执行相同的 Lua 脚本,应该尽量使用 EVAL 命令而不是 EVALSHA 命令。

powered by Gitbook© 2023 编外计划 | 最后修改: 2023-11-24 03:36:59

results matching ""

    No results matching ""