当停止并重新启动Redis服务器时,通过Redis发送内容会引发以下错误:"StackExchange.Redis.RedisServerException:NOSCRIPT No matching script. Please use EVAL。"
我的理解是,当服务器不记得具有SHA1摘要的脚本时,就会出现此错误。我猜测服务器在重新启动时会删除缓存的脚本 - 应该如何处理?
当停止并重新启动Redis服务器时,通过Redis发送内容会引发以下错误:"StackExchange.Redis.RedisServerException:NOSCRIPT No matching script. Please use EVAL。"
我的理解是,当服务器不记得具有SHA1摘要的脚本时,就会出现此错误。我猜测服务器在重新启动时会删除缓存的脚本 - 应该如何处理?
SCRIPT LOAD
。如果您正在使用*Async
API,则它不会自动重新发出此命令,因为无法理解调用方想要发生什么以及是否已经有相关命令正在执行中。但是,当使用非*Async
API时,它知道这不是问题,因此会自动为您重新发出命令而不显示错误。更新:我现在跟踪运行ID的更改, 这个ID唯一标识一个服务器运行(因此需要重启)。如果这个ID发生变化,脚本缓存将被清除。
FlushScriptCache
不会清除 Redis 中的脚本;它只会清除客户端中已知的内容,也就是说,下次使用脚本时,它应该自动执行SCRIPT LOAD
,因为它假设脚本不在服务器上。 - Marc Gravell