Class: RedisClient::ClusterConfig

Inherits:
Object
  • Object
show all
Defined in:
lib/redis_client/cluster_config.rb

Constant Summary collapse

InvalidClientConfigError =
Class.new(::RedisClient::Error)

Instance Attribute Summary collapse

Instance Method Summary collapse

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, max_startup_sample: MAX_STARTUP_SAMPLE, **client_config) ⇒ ClusterConfig

rubocop:disable Metrics/ParameterLists



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/redis_client/cluster_config.rb', line 35

def initialize( # rubocop:disable Metrics/ParameterLists
  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,
  max_startup_sample: MAX_STARTUP_SAMPLE,
  **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
  @max_startup_sample = max_startup_sample
end

Instance Attribute Details

#client_configObject (readonly)

Returns the value of attribute client_config.



32
33
34
# File 'lib/redis_client/cluster_config.rb', line 32

def client_config
  @client_config
end

#command_builderObject (readonly)

Returns the value of attribute command_builder.



32
33
34
# File 'lib/redis_client/cluster_config.rb', line 32

def command_builder
  @command_builder
end

#connect_with_original_configObject (readonly)

Returns the value of attribute connect_with_original_config.



32
33
34
# File 'lib/redis_client/cluster_config.rb', line 32

def connect_with_original_config
  @connect_with_original_config
end

#max_startup_sampleObject (readonly)

Returns the value of attribute max_startup_sample.



32
33
34
# File 'lib/redis_client/cluster_config.rb', line 32

def max_startup_sample
  @max_startup_sample
end

#replica_affinityObject (readonly)

Returns the value of attribute replica_affinity.



32
33
34
# File 'lib/redis_client/cluster_config.rb', line 32

def replica_affinity
  @replica_affinity
end

#slow_command_timeoutObject (readonly)

Returns the value of attribute slow_command_timeout.



32
33
34
# File 'lib/redis_client/cluster_config.rb', line 32

def slow_command_timeout
  @slow_command_timeout
end

#startup_nodesObject (readonly)

Returns the value of attribute startup_nodes.



32
33
34
# File 'lib/redis_client/cluster_config.rb', line 32

def startup_nodes
  @startup_nodes
end

Instance Method Details

#client_config_for_node(node_key) ⇒ Object



89
90
91
92
93
# File 'lib/redis_client/cluster_config.rb', line 89

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

#inspectObject



64
65
66
# File 'lib/redis_client/cluster_config.rb', line 64

def inspect
  "#<#{self.class.name} #{startup_nodes.values}>"
end

#new_client(**kwargs) ⇒ Object



81
82
83
# File 'lib/redis_client/cluster_config.rb', line 81

def new_client(**kwargs)
  @client_implementation.new(self, concurrency: @concurrency, **kwargs)
end

#new_pool(size: 5, timeout: 5, **kwargs) ⇒ Object



72
73
74
75
76
77
78
79
# File 'lib/redis_client/cluster_config.rb', line 72

def new_pool(size: 5, timeout: 5, **kwargs)
  @client_implementation.new(
    self,
    pool: { size: size, timeout: timeout },
    concurrency: @concurrency,
    **kwargs
  )
end

#read_timeoutObject



68
69
70
# File 'lib/redis_client/cluster_config.rb', line 68

def read_timeout
  @client_config[:read_timeout] || @client_config[:timeout] || ::RedisClient::Config::DEFAULT_TIMEOUT
end

#use_replica?Boolean

Returns:

  • (Boolean)


85
86
87
# File 'lib/redis_client/cluster_config.rb', line 85

def use_replica?
  @replica
end