*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"
*常见错误
- 脚本语法错误:返回错误,不加载脚本。
*最佳实践
- 缓存预热:应用启动时 SCRIPT LOAD 所有常用脚本,后续用 EVALSHA 执行,减少网络传输。
- 缓存检查:执行 EVALSHA 前,SCRIPT EXISTS 检查脚本是否已缓存,未缓存则 SCRIPT LOAD 后重试。
*FAQ
Q: SCRIPT LOAD 和 FUNCTION LOAD 有什么区别? A: SCRIPT LOAD 缓存单个脚本到内存(重启丢失);FUNCTION LOAD 加载持久化函数库(重启恢复)。