从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: 需要进行身份验证。