4

在停止和重新启动 Redis 服务器时,通过 Redis 发送内容会引发以下错误:“StackExchange.Redis.RedisServerException:NOSCRIPT 没有匹配的脚本。请使用 EVAL。”

我的理解是,当服务器不记得带有 SHA1 摘要的脚本时,就会发生此错误。我猜服务器会在重新启动时删除缓存的脚本 - 这应该如何处理?

4

1 回答 1

3

该库在内部检测到此错误并刷新已知良好脚本的本地缓存,因此该库将从该错误中自我修复,并且下次调用该脚本时它将SCRIPT LOAD自动发出一个。如果您正在使用*AsyncAPI,它不会自动重新发出此命令,因为无法理解调用者想要发生什么以及是否有相关命令已经在运行。但是,当使用非*AsyncAPI 时,它知道这不是问题,因此它会自动为您重新发出命令而不会出现错误。

重新启动 redis 服务器是一个相当罕见的事件,但是:我怀疑它可以合理地更改为在断开连接时刷新脚本缓存。


更新:我现在跟踪对 run-id 的更改,它唯一地标识服务器运行(因此重新启动)。如果这发生了变化,脚本缓存将被刷新。

于 2014-06-11T07:07:22.053 回答