ruby-on-rails - Rails、Redis 和哨兵

标签 ruby-on-rails redis redis-sentinel redis-rails

我有一个由 4 个节点组成的 Redis 集群,1 个主节点和 3 个从节点,由 Sentinel 监控。

现在在 Rails 中,我需要连接到这个集群,从最近的副本读取数据,然后写入主节点,就像我在 MongoDB 中所做的一样。

使用 redis-rails gem,如何配置 cache_store 以指定 Sentinels 而不是单个节点?

最佳答案

我可能错过了它,但我不知道您可以将它配置为从从设备读取数据?然而,这是我的 master + 2 slave 配置:

config.cache_store = :redis_store, {
    url: 'redis://prestwick/1',
    sentinels: [{host: 'prestwick.i', port: 26379}, {host: 'carnoustie.i', port: 26379}, {host: 'birkdale.i', port: 26379}],
    role: 'master',
    expires_in: 1.hour
  }

如果它有用,我对通用 REDIS 对象和 Sidekiq 的配置(在 config/initializers/001_redis.rb 中):

redis_options = {
  url: 'redis://prestwick/0',
  sentinels: [{host: 'prestwick.i', port: 26379}, {host: 'carnoustie.i', port: 26379}, {host: 'birkdale.i', port: 26379}],
  role: 'master'
}
redis_sidekiq_options = {
  url: 'redis://prestwick/2',
  sentinels: [{host: 'prestwick.i', port: 26379}, {host: 'carnoustie.i', port: 26379}, {host: 'birkdale.i', port: 26379}],
  role: 'master'
}

REDIS = Redis.new(redis_options)

Sidekiq.configure_server do |config|
  config.redis = redis_sidekiq_options
end
Sidekiq.configure_client do |config|
  config.redis = redis_sidekiq_options
end

关于ruby-on-rails - Rails、Redis 和哨兵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30080281/

相关文章:

redis - Vertx js 和 Redis Sentinel 连接

ruby-on-rails - 明确告诉翻译成什么语言

database - 从redis中的多键排序集中查询数据

ruby - 使用 Ruby 合并和更新 Redis 中的哈希键

r - 如何在 R 中转换 Redis 日期

ruby - 在 kubernetes 上使用 sentinel 连接到 redis 集群

ruby-on-rails - 日志中的 Sidekiq 堆栈跟踪

ruby-on-rails - 带有 RSPEC 错误的 Controller 测试未实现

ruby-on-rails - Ruby on Rails-渲染布局

redis - Redis 副本集的故障转移,Celery