*Redis SCRIPT LOAD 命令

将 Lua 脚本加载到脚本缓存,返回 SHA1 哈希值。后续可以用 EVALSHA 执行,无需再次传输完整脚本。


*语法

SCRIPT LOAD script

*参数说明

参数 类型 必填 说明
script String Lua 脚本内容

*返回值

条件 返回值
加载成功 脚本的 SHA1 哈希值(String)

*时间复杂度

取决于脚本长度。


*示例

> SCRIPT LOAD "return redis.call('GET', KEYS[1])"
"a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

> EVALSHA a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0 1 mykey
"value"

*常见错误

  1. 脚本语法错误:返回错误,不加载脚本。

*最佳实践

  1. 缓存预热:应用启动时 SCRIPT LOAD 所有常用脚本,后续用 EVALSHA 执行,减少网络传输。
  2. 缓存检查:执行 EVALSHA 前,SCRIPT EXISTS 检查脚本是否已缓存,未缓存则 SCRIPT LOAD 后重试。

*FAQ

Q: SCRIPT LOAD 和 FUNCTION LOAD 有什么区别? A: SCRIPT LOAD 缓存单个脚本到内存(重启丢失);FUNCTION LOAD 加载持久化函数库(重启恢复)。

Q: SCRIPT LOAD 的缓存会过期吗? A: 不会自动过期。但重启后丢失,或 SCRIPT FLUSH 清空。