Class: RedisClient::ClusterConfig

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

Constant Summary collapse

InvalidClientConfigError =
Class.new(::RedisClient::Cluster::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



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
63
64
# File 'lib/redis_client/cluster_config.rb', line 37

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
  @id = client_config[:id]
end

Instance Attribute Details

#client_configObject (readonly)

Returns the value of attribute client_config.



34
35
36
# File 'lib/redis_client/cluster_config.rb', line 34

def client_config
  @client_config
end

#command_builderObject (readonly)

Returns the value of attribute command_builder.



34
35
36
# File 'lib/redis_client/cluster_config.rb', line 34

def command_builder
  @command_builder
end

#connect_with_original_configObject (readonly)

Returns the value of attribute connect_with_original_config.



34
35
36
# File 'lib/redis_client/cluster_config.rb', line 34

def connect_with_original_config
  @connect_with_original_config
end

#idObject (readonly)

Returns the value of attribute id.



34
35
36
# File 'lib/redis_client/cluster_config.rb', line 34

def id
  @id
end

#max_startup_sampleObject (readonly)

Returns the value of attribute max_startup_sample.



34
35
36
# File 'lib/redis_client/cluster_config.rb', line 34

def max_startup_sample
  @max_startup_sample
end

#replica_affinityObject (readonly)

Returns the value of attribute replica_affinity.



34
35
36
# File 'lib/redis_client/cluster_config.rb', line 34

def replica_affinity
  @replica_affinity
end

#slow_command_timeoutObject (readonly)

Returns the value of attribute slow_command_timeout.



34
35
36
# File 'lib/redis_client/cluster_config.rb', line 34

def slow_command_timeout
  @slow_command_timeout
end

#startup_nodesObject (readonly)

Returns the value of attribute startup_nodes.



34
35
36
# File 'lib/redis_client/cluster_config.rb', line 34

def startup_nodes
  @startup_nodes
end

Instance Method Details

#client_config_for_node(node_key) ⇒ Object



91
92
93
94
95
# File 'lib/redis_client/cluster_config.rb', line 91

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



66
67
68
# File 'lib/redis_client/cluster_config.rb', line 66

def inspect
  "#<#{self.class.name} #{startup_nodes.values.map { |v| v.reject { |k| k == :command_builder } }}>"
end

#new_client(**kwargs) ⇒ Object



83
84
85
# File 'lib/redis_client/cluster_config.rb', line 83

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

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



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

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

#read_timeoutObject



70
71
72
# File 'lib/redis_client/cluster_config.rb', line 70

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

#resolved?Boolean

Returns:

  • (Boolean)


97
98
99
# File 'lib/redis_client/cluster_config.rb', line 97

def resolved?
  true
end

#sentinel?Boolean

Returns:

  • (Boolean)


101
102
103
# File 'lib/redis_client/cluster_config.rb', line 101

def sentinel?
  false
end

#server_urlObject



105
106
107
# File 'lib/redis_client/cluster_config.rb', line 105

def server_url
  nil
end

#use_replica?Boolean

Returns:

  • (Boolean)


87
88
89
# File 'lib/redis_client/cluster_config.rb', line 87

def use_replica?
  @replica
end