使用Rails的perform_later遇RedisClient版本错误,如何解决?
解决RedisClient::UnsupportedServer错误(redis-client requires Redis 6+)
这个错误是因为你当前使用的Redis服务器版本低于6.0,而redis-client gem要求Redis服务器至少为6.0版本,导致调用perform_later时触发兼容性校验失败。以下是几种解决方式:
方案一:升级Redis服务器到6.0及以上
这是最彻底的解决方案,能获得Redis新版本的特性和安全更新:
- 本地开发环境:
- Mac(Homebrew):执行
brew upgrade redis,完成后重启服务brew services restart redis - Ubuntu/Debian(APT):先更新源
sudo apt update,再升级Redissudo apt install --only-upgrade redis-server,最后重启服务sudo systemctl restart redis - 手动安装:下载Redis官方6.0+版本的源码,编译安装后替换旧版本服务
- Mac(Homebrew):执行
- 生产环境:
- 先备份Redis数据:执行
redis-cli SAVE生成RDB备份文件 - 通过服务器包管理工具升级,或切换到Docker镜像(如
redis:6.2或更高版本),确保数据目录正确挂载
- 先备份Redis数据:执行
方案二:降级redis-client gem版本
如果暂时无法升级Redis服务器,可以临时降级redis-client到兼容旧版本Redis的版本:
- 在项目的Gemfile中添加版本限制:
gem 'redis-client', '< 0.14' - 执行
bundle install更新依赖
注意:旧版本可能存在安全隐患或缺少新功能,仅作为临时过渡方案,建议尽快升级Redis服务器
方案三:确认Redis连接配置
检查Rails应用的Redis配置,确保指向的是版本≥6.0的Redis实例:
- 查看
config/initializers/redis.rb或各环境配置文件(config/environments/*.rb)中的Redis连接地址、端口,确认连接的服务器版本符合要求
内容的提问来源于stack exchange,提问作者andrefurquin
相关产品推荐
相关产品推荐

