Module: Familia::Connection
- Included in:
- Familia
- Defined in:
- lib/familia/connection.rb
Overview
The Connection module provides Redis connection management for Familia. It allows easy setup and access to Redis clients across different URIs.
Instance Attribute Summary collapse
-
#enable_redis_counter ⇒ Boolean
Whether Redis command counter is enabled.
-
#enable_redis_logging ⇒ Boolean
Whether Redis command logging is enabled.
-
#redis_clients ⇒ Hash
readonly
A hash of Redis clients, keyed by server ID.
-
#uri ⇒ URI
(also: #url)
The default URI for Redis connections.
Instance Method Summary collapse
-
#connect(uri = nil) ⇒ Redis
Establishes a connection to a Redis server.
-
#redis(uri = nil) ⇒ Redis
Retrieves or creates a Redis client for the given URI.
Instance Attribute Details
#enable_redis_counter ⇒ Boolean
Returns Whether Redis command counter is enabled.
23 24 25 |
# File 'lib/familia/connection.rb', line 23 def enable_redis_counter @enable_redis_counter end |
#enable_redis_logging ⇒ Boolean
Returns Whether Redis command logging is enabled.
20 21 22 |
# File 'lib/familia/connection.rb', line 20 def enable_redis_logging @enable_redis_logging end |
#redis_clients ⇒ Hash (readonly)
Returns A hash of Redis clients, keyed by server ID.
14 15 16 |
# File 'lib/familia/connection.rb', line 14 def redis_clients @redis_clients end |
#uri ⇒ URI Also known as: url
Returns The default URI for Redis connections.
17 18 19 |
# File 'lib/familia/connection.rb', line 17 def uri @uri end |
Instance Method Details
#connect(uri = nil) ⇒ Redis
Establishes a connection to a Redis server.
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/familia/connection.rb', line 32 def connect(uri = nil) uri = URI.parse(uri) if uri.is_a?(String) uri ||= Familia.uri raise ArgumentError, 'No URI specified' unless uri conf = uri.conf if Familia.enable_redis_logging RedisLogger.logger = Familia.logger RedisClient.register(RedisLogger) end if Familia.enable_redis_counter # NOTE: This middleware stays thread-safe with a mutex so it will # be a bottleneck when enabled in multi-threaded environments. RedisClient.register(RedisCommandCounter) end redis = Redis.new(conf) @redis_clients[uri.serverid] = redis end |
#redis(uri = nil) ⇒ Redis
Retrieves or creates a Redis client for the given URI.
62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/familia/connection.rb', line 62 def redis(uri = nil) if uri.is_a?(Integer) tmp = Familia.uri tmp.db = uri uri = tmp elsif uri.is_a?(String) uri &&= URI.parse uri end uri ||= Familia.uri connect(uri) unless @redis_clients[uri.serverid] @redis_clients[uri.serverid] end |