从Sidekiq连接到将加密设置为true的Redis中的正在发送的邮件

只需要一种选项。

前提 – 在中文中没有明确的对应词语,所以可以直接使用”前提”这个词。

在引入Sidekiq时,尽管在私有网络内,但我们决定对应用和Redis之间的通信进行加密。在此过程中,遇到了无法连接到Redis的问题,这篇文章是为了记录修复该问题。

只需要一个选项,请将以下内容用中文进行改写:
※ 在Redis中使用ElastiCache for Redis。

成果

在将以下内容设置为环境变量之后,从环境变量注入以下内容。

REDIS_URL=rediss://aaa.aaa.aaa.0000.apne1.cache.amazonaws.com:6379
REDIS_AUTH_TOKEN=****
# config/initializers/sidekiq.rb
Sidekiq.configure_client do |config|
  config.redis = {
    url: ENV.fetch("REDIS_URL") { "redis://127.0.0.1:6379" },
    password: ENV.fetch("REDIS_AUTH_TOKEN") { nil },
  }
end

Sidekiq.configure_server do |config|
  config.redis = {
    url: ENV.fetch("REDIS_URL") { "redis://127.0.0.1:6379" },
    password: ENV.fetch("REDIS_AUTH_TOKEN") { nil },
  }
end

绊倒点

    • 本番の環境では通信を暗号化したいがローカルでは暗号化せずさっと実装したい

passwordのデフォルトをnilにすることでローカルでは非暗号化で対応可能
本番では rediss:// に指定する

没成功的案例

我尝试在Redis上无密码连接。

Redis::TimeoutError:连接超时
不知道为什么,但被视为超时处理
由于端口相同,我以为会是认证错误,但实际上是超时

在rediss中未指定密码

出现 Redis::CommandError: 需要进行身份验证。