Rails 8.0升级:移除Redis依赖改用Solid*的操作流程咨询
从Redis迁移到Rails 8.0 Solid*特性的实操步骤
1. 先完成Rails 8.0基础升级
- 把Gemfile里的
rails版本改成~> 8.0,执行bundle update rails解决依赖冲突,和你之前升级7.x版本一样,先处理完所有弃用警告和基础兼容性问题 - 确保应用能在Rails 8.0环境下正常运行基础功能
2. 梳理Redis的所有使用场景
- 把应用里用到Redis的地方全部列出来:比如缓存、用户会话存储、Action Cable广播后端、临时数据存储(比如任务状态、临时计算结果)
- 对应好Solid*的替代组件:缓存用Solid Cache,会话用Solid Session,Action Cable用内置的Solid Cable
3. 替换缓存层为Solid Cache
- 删除Gemfile里的
redis、redis-cache-store这类依赖包,Rails 8.0默认已集成Solid Cache,无需额外添加(如果未自动引入可手动添加solid_cache) - 修改
config/environments/*.rb中的缓存配置:将原来的config.cache_store = :redis_cache_store, { url: ENV["REDIS_URL"] }替换为config.cache_store = :solid_cache - 执行
rails solid_cache:install生成数据库迁移文件,再运行rails db:migrate创建缓存所需的数据库表 - 测试所有缓存相关功能:页面缓存、片段缓存、代码中手动调用
Rails.cache的场景,确保读写逻辑正常
4. 替换会话存储为Solid Session
- 删除
redis-session-store这类第三方会话存储Gem - 修改
config/initializers/session_store.rb,将Redis会话配置替换为:Rails.application.config.session_store :solid_session_store, key: '_your_app_session' - 执行
rails solid_session:install生成迁移文件,运行rails db:migrate创建会话存储表 - 测试用户登录、登出、会话持久化功能,确保用户状态能正常保存与读取
5. 替换Action Cable后端为Solid Cable
- 如果之前Action Cable使用Redis作为广播后端,直接修改
config/cable.yml:development: adapter: solid_cable test: adapter: test production: adapter: solid_cable - 重启Action Cable服务,测试实时功能(比如聊天、通知),确保消息能正常广播和订阅
6. 清理剩余Redis依赖
- 搜索代码中直接调用Redis的场景:比如
Redis.new、$redis这类全局实例 - 替换这些场景:临时数据可改用Active Record临时表,或使用Solid Cache的过期键存储
- 删除Gemfile中所有Redis相关依赖,执行
bundle clean清理无用依赖
7. 全面测试验证
- 运行完整测试套件,确保所有功能正常
- 部署到 staging 环境,模拟生产流量,监控性能与错误日志
- 确认无Redis相关连接报错,Solid*组件的性能符合预期
内容的提问来源于stack exchange,提问作者mark.sack
相关产品推荐
相关产品推荐

