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

Rails.cache闲置数分钟后Redis连接失败问题求助

问题:Ruby 3.2.2 + Rails 7.0.4.3 迁移后Redis连接间歇性失败

上周将应用迁移至Ruby 3.2.2和Rails 7.0.4.3后,生产环境(部署在Heroku,使用最新版本Redis 7.0.11)中所有访问Redis的命令出现间歇性报错:

  • 首次调用Redis命令会触发连接断开错误,重试一次即可成功
  • 闲置约5分钟后再次调用,会重复“首次失败、重试恢复”的循环
  • 尝试在缓存读写逻辑里添加rescue捕获异常,但没有效果

报错信息示例:

Rails.cache.stats
# => app/vendor/bundle/ruby/3.2.0/gems/redis-client-0.14.1/lib/redis_client/ruby_connection.rb:101:in `rescue in read` EOFError (Redis::ConnectionError)
# => app/vendor/bundle/ruby/3.2.0/gems/redis-client-0.14.1/lib/redis_client/ruby_connection.rb:101:in `rescue in read` EOFError (RedisClient::ConnectionError)
# => app/vendor/bundle/ruby/3.2.0/gems/redis-client-0.14.1/lib/redis_client/ruby_connection/buffered_io.rb:145:in `block in fill_buffer': EOFError (EOFError)
Rails.cache.stats
# => {
"redis_version"=>"7.0.11",
"redis_git_sha1"=>...
}
解决方案

感谢Tadman的提示,问题根源是Heroku默认会在连接闲置5分钟后自动断开,而升级Redis时原有的连接超时配置被覆盖了。禁用Redis连接超时设置即可彻底解决该问题。

内容的提问来源于stack exchange,提问作者Diego Thomaz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:15:29