Module: Semian::RedisV4
- Includes:
- Adapter
- Defined in:
- lib/semian/redis.rb
Constant Summary
collapse
- ResourceBusyError =
::Redis::ResourceBusyError
- CircuitOpenError =
::Redis::CircuitOpenError
- ResolveError =
::Redis::ResolveError
Class Method Summary
collapse
Instance Method Summary
collapse
Methods included from Adapter
#clear_semian_resource, #semian_resource
Class Method Details
.included(base) ⇒ Object
The naked methods are exposed as ‘raw_query` and `raw_connect` for instrumentation purpose
85
86
87
88
89
90
91
|
# File 'lib/semian/redis.rb', line 85
def included(base)
base.send(:alias_method, :raw_io, :io)
base.send(:remove_method, :io)
base.send(:alias_method, :raw_connect, :connect)
base.send(:remove_method, :connect)
end
|
Instance Method Details
#connect ⇒ Object
110
111
112
113
114
115
116
117
118
|
# File 'lib/semian/redis.rb', line 110
def connect
acquire_semian_resource(adapter: :redis, scope: :connection) do
raw_connect
rescue SocketError, RuntimeError => e
raise ResolveError, semian_identifier if dns_resolve_failure?(e.cause || e)
raise
end
end
|
#io(&block) ⇒ Object
102
103
104
105
106
107
108
|
# File 'lib/semian/redis.rb', line 102
def io(&block)
acquire_semian_resource(adapter: :redis, scope: :query) do
reply = raw_io(&block)
raise_if_out_of_memory(reply)
reply
end
end
|
#semian_identifier ⇒ Object
94
95
96
97
98
99
100
|
# File 'lib/semian/redis.rb', line 94
def semian_identifier
@semian_identifier ||= begin
name = semian_options && semian_options[:name]
name ||= "#{location}/#{db}"
:"redis_#{name}"
end
end
|
#with_resource_timeout(temp_timeout) ⇒ Object
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
|
# File 'lib/semian/redis.rb', line 120
def with_resource_timeout(temp_timeout)
timeout = options[:timeout]
connect_timeout = options[:connect_timeout]
read_timeout = options[:read_timeout]
write_timeout = options[:write_timeout]
begin
connection.timeout = temp_timeout if connected?
options[:timeout] = Float(temp_timeout)
options[:connect_timeout] = Float(temp_timeout)
options[:read_timeout] = Float(temp_timeout)
options[:write_timeout] = Float(temp_timeout)
yield
ensure
options[:timeout] = timeout
options[:connect_timeout] = connect_timeout
options[:read_timeout] = read_timeout
options[:write_timeout] = write_timeout
connection.timeout = self.timeout if connected?
end
end
|