我已经使用 GCP 中的云 sql 在 docker 中设置了一个 Rails 应用程序。我现在添加 Memorystore Redis 以及 Action Cable 和 Sidekiq。
GCP Memorystore redis不支持客户端命令并导致硬错误:
RedisClient::CommandError: ERR unknown command `CLIENT`, with args beginning with: `SETNAME`, `ActionCable-PID-18`
Run Code Online (Sandbox Code Playgroud)
在 docker compose 中本地运行东西没有任何问题。
Google 详细记录了 GCP 的 Memorystore redis 不支持客户端命令。
就配置而言,已设置无服务器 VPC 并使用以下命令构建映像:
vpc-connector=VPC_id
update-env-vars REDIS_URL=redis://ip:port
Run Code Online (Sandbox Code Playgroud)
启动 docker 映像,它会创建云 sql 数据库并开始播种。
在播种过程中,当使用操作 Cable/sidekiq 创建用户期间发送电子邮件时,会发生错误。
根据 sidekiq git: https: //github.com/sidekiq/sidekiq/issues/3518 有一个已知的解决方法。在我的 redis 初始化程序中我添加了:
Sidekiq.configure_server do |config|
config.redis = { url: ENV["REDIS_URL"], id: nil }
end
Sidekiq.configure_client do |config|
config.redis = …Run Code Online (Sandbox Code Playgroud) ruby-on-rails sidekiq google-cloud-platform actioncable google-cloud-memorystore