Module: Sensu::Redis

Defined in:
lib/sensu/redis.rb,
lib/sensu/redis/errors.rb,
lib/sensu/redis/parser.rb,
lib/sensu/redis/commands.rb,
lib/sensu/redis/constants.rb,
lib/sensu/redis/processor.rb,
lib/sensu/redis/connection.rb

Defined Under Namespace

Modules: Commands, Connection, Parser, Processor Classes: Client, CommandError, ConnectionError, ProtocolError

Constant Summary collapse

OK =

RESP (REdis Serialization Protocol) response type characters and delimiter (redis.io/topics/protocol).

"OK".freeze
MINUS =
"-".freeze
PLUS =
"+".freeze
COLON =
":".freeze
DOLLAR =
"$".freeze
ASTERISK =
"*".freeze
DELIM =
"\r\n".freeze
INCOMPLETE =

Redis response line parser incomplete data return value.

"incomp".freeze
EMPTY_ARRAY =

Used to return empty array reponses.

[].freeze
TRUE_VALUES =

Redis response boolean values.

%w[1 OK].freeze
PUBSUB_RESPONSES =

Redis pubsub response type values.

%w[message unsubscribe].freeze
REDIS_COMMANDS =

Redis commands that are supported by this library.

[
  "set",
  "setnx",
  "get",
  "getset",
  "del",
  "info",
  "sadd",
  "smembers",
  "sismember",
  "srem",
  "scard",
  "hset",
  "hsetnx",
  "hget",
  "hgetall",
  "hdel",
  "hincrby",
  "rpush",
  "lpush",
  "ltrim",
  "lrange",
  "exists",
  "ttl",
  "expire",
  "flushdb",
  "incr"
].freeze
SELECT_COMMAND =

Redis DB select command.

"select".freeze
AUTH_COMMAND =

Redis authentication command.

"auth".freeze
SUBSCRIBE_COMMAND =

Redis PubSub subscribe command.

"subscribe".freeze
UNSUBSCRIBE_COMMAND =

Redis PubSub unsubscribe command.

"unsubscribe".freeze
BOOLEAN_PROCESSOR =

Boolean Redis response value processor.

lambda{|r| TRUE_VALUES.include?(r.to_s)}
RESPONSE_PROCESSORS =

Redis response value processors.

{
  "exists" => BOOLEAN_PROCESSOR,
  "sadd" => BOOLEAN_PROCESSOR,
  "srem" => BOOLEAN_PROCESSOR,
  "setnx" => BOOLEAN_PROCESSOR,
  "del" => BOOLEAN_PROCESSOR,
  "expire" => BOOLEAN_PROCESSOR,
  "select" => BOOLEAN_PROCESSOR,
  "hset" => BOOLEAN_PROCESSOR,
  "hdel" => BOOLEAN_PROCESSOR,
  "hsetnx" => BOOLEAN_PROCESSOR,
  "hgetall" => lambda{|r| Hash[*r]},
  "info" => lambda{|r|
    info = {}
    r.each_line do |line|
      line.chomp!
      unless line.empty?
        k, v = line.split(":", 2)
        info[k.to_sym] = v
      end
    end
    info
  }
}