Class: Redis::Client

Inherits:
RedisClient
  • Object
show all
Defined in:
lib/redis/client.rb

Constant Summary collapse

ERROR_MAPPING =
{
  RedisClient::ConnectionError => Redis::ConnectionError,
  RedisClient::CommandError => Redis::CommandError,
  RedisClient::ReadTimeoutError => Redis::TimeoutError,
  RedisClient::CannotConnectError => Redis::CannotConnectError,
  RedisClient::AuthenticationError => Redis::CannotConnectError,
  RedisClient::FailoverError => Redis::CannotConnectError,
  RedisClient::PermissionError => Redis::PermissionError,
  RedisClient::WrongTypeError => Redis::WrongTypeError,
  RedisClient::ReadOnlyError => Redis::ReadOnlyError,
  RedisClient::ProtocolError => Redis::ProtocolError,
  RedisClient::OutOfMemoryError => Redis::OutOfMemoryError,
}

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.config(**kwargs) ⇒ Object



23
24
25
# File 'lib/redis/client.rb', line 23

def config(**kwargs)
  super(protocol: 2, **kwargs)
end

.sentinel(**kwargs) ⇒ Object



27
28
29
# File 'lib/redis/client.rb', line 27

def sentinel(**kwargs)
  super(protocol: 2, **kwargs, client_implementation: ::RedisClient)
end

.translate_error!(error, mapping: ERROR_MAPPING) ⇒ Object

Raises:

  • (redis_error)


31
32
33
34
# File 'lib/redis/client.rb', line 31

def translate_error!(error, mapping: ERROR_MAPPING)
  redis_error = translate_error_class(error.class, mapping: mapping)
  raise redis_error, error.message, error.backtrace
end

Instance Method Details

#blocking_call_v(timeout, command, &block) ⇒ Object



102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/redis/client.rb', line 102

def blocking_call_v(timeout, command, &block)
  if timeout && timeout > 0
    # Can't use the command timeout argument as the connection timeout
    # otherwise it would be very racy. So we add the regular read_timeout on top
    # to account for the network delay.
    timeout += config.read_timeout
  end

  super(timeout, command, &block)
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

#call_v(command, &block) ⇒ Object



96
97
98
99
100
# File 'lib/redis/client.rb', line 96

def call_v(command, &block)
  super(command, &block)
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

#dbObject



61
62
63
# File 'lib/redis/client.rb', line 61

def db
  config.db
end

#ensure_connected(retryable: true, &block) ⇒ Object



90
91
92
93
94
# File 'lib/redis/client.rb', line 90

def ensure_connected(retryable: true, &block)
  super(retryable: retryable, &block)
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

#hostObject



65
66
67
# File 'lib/redis/client.rb', line 65

def host
  config.host unless config.path
end

#idObject



49
50
51
# File 'lib/redis/client.rb', line 49

def id
  config.id
end

#inherit_socket!Object



127
128
129
# File 'lib/redis/client.rb', line 127

def inherit_socket!
  @inherit_socket = true
end

#multi(watch: nil) ⇒ Object



121
122
123
124
125
# File 'lib/redis/client.rb', line 121

def multi(watch: nil)
  super
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

#passwordObject



81
82
83
# File 'lib/redis/client.rb', line 81

def password
  config.password
end

#pathObject



73
74
75
# File 'lib/redis/client.rb', line 73

def path
  config.path
end

#pipelined(exception: true) ⇒ Object



115
116
117
118
119
# File 'lib/redis/client.rb', line 115

def pipelined(exception: true)
  super
rescue ::RedisClient::Error => error
  Client.translate_error!(error)
end

#portObject



69
70
71
# File 'lib/redis/client.rb', line 69

def port
  config.port unless config.path
end

#server_urlObject



53
54
55
# File 'lib/redis/client.rb', line 53

def server_url
  config.server_url
end

#timeoutObject



57
58
59
# File 'lib/redis/client.rb', line 57

def timeout
  config.read_timeout
end

#usernameObject



77
78
79
# File 'lib/redis/client.rb', line 77

def username
  config.username
end