NOSCRIPT: NOSCRIPT No matching script. Please use EVAL(没有匹配的脚本。请使用 EVAL)
Redis含义
在服务器的脚本缓存中找不到用 EVALSHA 调用的 Lua 脚本的 SHA1 摘要。Redis 不知道与该哈希对应的脚本。
原因
服务器已重启或脚本缓存被 SCRIPT FLUSH 清除、脚本从未加载过,或故障转移后新节点上的缓存为空。
解决方法
通过 EVAL 以完整脚本体运行(Redis 会自动缓存),或先用 SCRIPT LOAD 加载,再在 EVALSHA 中使用返回的 SHA。在应用中捕获 NOSCRIPT 错误,实现从 EVALSHA 回退到 EVAL 的逻辑。许多 Redis 客户端库会自动完成这一点。
同一数据库的其他条目
- CROSSSLOTCROSSSLOT Keys in request don't hash to the same slot(请求中的键未哈希到同一槽)
- MOVEDMOVED slot ip:port(集群重定向)
- ASKASK slot ip:port(集群重定向)
- EXECABORTEXECABORT Transaction discarded because of previous errors(由于之前的错误,事务已被丢弃)
- NOPERMNOPERM this user has no permissions to run the command or access one of the keys(该用户无权运行此命令或访问其中某个键)
- ERR value is not an integer or out of rangeERR value is not an integer or out of range(值不是整数或超出范围)
- ERR value is not a valid floatERR value is not a valid float(值不是有效的浮点数)