Rails、Redis 和 Sentinel
Rails, Redis and Sentinel
我有一个 Redis 集群,有 4 个节点,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
我有一个 Redis 集群,有 4 个节点,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