You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Lettuce需向Redis集群所有节点(含副本)发送脚本加载命令?

为啥Lettuce要给Redis集群所有节点发Lua脚本加载命令?
  • Redis主从复制管不到SCRIPT LOAD操作:主从复制只会同步脚本的执行结果,不会同步脚本的缓存动作。你在主节点用SCRIPT LOAD把脚本存进缓存后,从节点不会自动跟着缓存这个脚本——只有当主节点执行该脚本时,从节点才会拿到完整脚本内容去执行,但执行完不会把它存在自己的缓存里。要是之后请求打到从节点,用EVALSHA调用脚本,就会因为从节点没缓存而报错。

  • Lettuce要保证全集群脚本缓存一致:scriptLoad默认给所有节点发命令,就是为了让集群里不管主节点还是从节点,都提前把脚本缓存好。这样不管后续请求路由到哪个节点(比如你开了从节点读请求的话),用EVALSHA都能直接执行,不会出问题。

  • 遇到节点宕机的解决办法:如果你能接受从节点首次执行脚本时传完整内容的开销,或者根本不会从从节点调用脚本,可以改Lettuce的配置,让scriptLoad只发给主节点,这样就算有从节点宕机也不会影响加载操作。

内容的提问来源于stack exchange,提问作者Peter Phan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 21:12:31