Class: RedisClient::ClusterConfig
- Inherits:
-
Object
- Object
- RedisClient::ClusterConfig
- Defined in:
- lib/redis_client/cluster_config.rb
Constant Summary collapse
- DEFAULT_HOST =
'127.0.0.1'
- DEFAULT_PORT =
6379
- DEFAULT_SCHEME =
'redis'
- SECURE_SCHEME =
'rediss'
- DEFAULT_NODES =
["#{DEFAULT_SCHEME}://#{DEFAULT_HOST}:#{DEFAULT_PORT}"].freeze
- VALID_SCHEMES =
[DEFAULT_SCHEME, SECURE_SCHEME].freeze
- VALID_NODES_KEYS =
%i[ssl username password host port db].freeze
- MERGE_CONFIG_KEYS =
%i[ssl username password].freeze
- IGNORE_GENERIC_CONFIG_KEYS =
%i[url host port path].freeze
- MAX_WORKERS =
Integer(ENV.fetch('REDIS_CLIENT_MAX_THREADS', 5))
- SLOW_COMMAND_TIMEOUT =
It’s used with slow queries of fetching meta data like CLUSTER NODES, COMMAND and so on.
Float(ENV.fetch('REDIS_CLIENT_SLOW_COMMAND_TIMEOUT', -1))
- InvalidClientConfigError =
Class.new(::RedisClient::Error)
Instance Attribute Summary collapse
-
#client_config ⇒ Object
readonly
Returns the value of attribute client_config.
-
#command_builder ⇒ Object
readonly
Returns the value of attribute command_builder.
-
#connect_with_original_config ⇒ Object
readonly
Returns the value of attribute connect_with_original_config.
-
#replica_affinity ⇒ Object
readonly
Returns the value of attribute replica_affinity.
-
#slow_command_timeout ⇒ Object
readonly
Returns the value of attribute slow_command_timeout.
-
#startup_nodes ⇒ Object
readonly
Returns the value of attribute startup_nodes.
Instance Method Summary collapse
- #client_config_for_node(node_key) ⇒ Object
-
#initialize(nodes: DEFAULT_NODES, replica: false, replica_affinity: :random, fixed_hostname: '', concurrency: nil, connect_with_original_config: false, client_implementation: ::RedisClient::Cluster, slow_command_timeout: SLOW_COMMAND_TIMEOUT, command_builder: ::RedisClient::CommandBuilder, **client_config) ⇒ ClusterConfig
constructor
A new instance of ClusterConfig.
- #inspect ⇒ Object
- #new_client(**kwargs) ⇒ Object
- #new_pool(size: 5, timeout: 5, **kwargs) ⇒ Object
- #read_timeout ⇒ Object
- #use_replica? ⇒ Boolean
Constructor Details
#initialize(nodes: DEFAULT_NODES, replica: false, replica_affinity: :random, fixed_hostname: '', concurrency: nil, connect_with_original_config: false, client_implementation: ::RedisClient::Cluster, slow_command_timeout: SLOW_COMMAND_TIMEOUT, command_builder: ::RedisClient::CommandBuilder, **client_config) ⇒ ClusterConfig
Returns a new instance of ClusterConfig.
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/redis_client/cluster_config.rb', line 29 def initialize( nodes: DEFAULT_NODES, replica: false, replica_affinity: :random, fixed_hostname: '', concurrency: nil, connect_with_original_config: false, client_implementation: ::RedisClient::Cluster, # for redis gem slow_command_timeout: SLOW_COMMAND_TIMEOUT, command_builder: ::RedisClient::CommandBuilder, **client_config ) @replica = true & replica @replica_affinity = replica_affinity.to_s.to_sym @fixed_hostname = fixed_hostname.to_s @command_builder = command_builder node_configs = build_node_configs(nodes.dup) @client_config = merge_generic_config(client_config, node_configs) # Keep tabs on the original startup nodes we were constructed with @startup_nodes = build_startup_nodes(node_configs) @concurrency = merge_concurrency_option(concurrency) @connect_with_original_config = connect_with_original_config @client_implementation = client_implementation @slow_command_timeout = slow_command_timeout end |
Instance Attribute Details
#client_config ⇒ Object (readonly)
Returns the value of attribute client_config.
26 27 28 |
# File 'lib/redis_client/cluster_config.rb', line 26 def client_config @client_config end |
#command_builder ⇒ Object (readonly)
Returns the value of attribute command_builder.
26 27 28 |
# File 'lib/redis_client/cluster_config.rb', line 26 def command_builder @command_builder end |
#connect_with_original_config ⇒ Object (readonly)
Returns the value of attribute connect_with_original_config.
26 27 28 |
# File 'lib/redis_client/cluster_config.rb', line 26 def connect_with_original_config @connect_with_original_config end |
#replica_affinity ⇒ Object (readonly)
Returns the value of attribute replica_affinity.
26 27 28 |
# File 'lib/redis_client/cluster_config.rb', line 26 def replica_affinity @replica_affinity end |
#slow_command_timeout ⇒ Object (readonly)
Returns the value of attribute slow_command_timeout.
26 27 28 |
# File 'lib/redis_client/cluster_config.rb', line 26 def slow_command_timeout @slow_command_timeout end |
#startup_nodes ⇒ Object (readonly)
Returns the value of attribute startup_nodes.
26 27 28 |
# File 'lib/redis_client/cluster_config.rb', line 26 def startup_nodes @startup_nodes end |
Instance Method Details
#client_config_for_node(node_key) ⇒ Object
81 82 83 84 85 |
# File 'lib/redis_client/cluster_config.rb', line 81 def client_config_for_node(node_key) config = ::RedisClient::Cluster::NodeKey.hashify(node_key) config[:port] = ensure_integer(config[:port]) augment_client_config(config) end |
#inspect ⇒ Object
56 57 58 |
# File 'lib/redis_client/cluster_config.rb', line 56 def inspect "#<#{self.class.name} #{startup_nodes.values}>" end |
#new_client(**kwargs) ⇒ Object
73 74 75 |
# File 'lib/redis_client/cluster_config.rb', line 73 def new_client(**kwargs) @client_implementation.new(self, concurrency: @concurrency, **kwargs) end |
#new_pool(size: 5, timeout: 5, **kwargs) ⇒ Object
64 65 66 67 68 69 70 71 |
# File 'lib/redis_client/cluster_config.rb', line 64 def new_pool(size: 5, timeout: 5, **kwargs) @client_implementation.new( self, pool: { size: size, timeout: timeout }, concurrency: @concurrency, **kwargs ) end |
#read_timeout ⇒ Object
60 61 62 |
# File 'lib/redis_client/cluster_config.rb', line 60 def read_timeout @client_config[:read_timeout] || @client_config[:timeout] || ::RedisClient::Config::DEFAULT_TIMEOUT end |
#use_replica? ⇒ Boolean
77 78 79 |
# File 'lib/redis_client/cluster_config.rb', line 77 def use_replica? @replica end |