在停止并重新启动Redis服务器时,通过Redis发送内容会引发以下错误:"" StackExchange.Redis.RedisServerException:NOSCRIPT没有匹配的脚本。请使用EVAL。"
我的理解是当服务器不记得带有SHA1摘要的脚本时会发生此错误。我猜服务器在重启时删除缓存的脚本 - 应如何处理?
答案 0 :(得分:2)
库在内部检测到此错误并刷新已知良好脚本的本地缓存,因此库将从此自我修复,并且下次调用脚本时,它将自动发出SCRIPT LOAD
。如果您使用*Async
API,它不会自动重新发布,因为无法理解调用者想要发生什么以及是否有相关命令已经在飞行中。但是,在使用非*Async
API时,它知道这不是问题,因此它会自动为您重新发出命令而不会出现错误。
重新启动redis服务器是一件非常罕见的事情,但是:我怀疑它可以合理地更改为在断开连接时刷新脚本缓存。
更新:我现在track changes to the run-id,它唯一地标识服务器运行(因此重新启动)。如果更改,则刷新脚本缓存。