Class: EventMachine::Hiredis::Client

Inherits:
BaseClient show all
Defined in:
lib/em-hiredis/client.rb

Instance Attribute Summary

Attributes inherited from BaseClient

#db, #host, #password, #port

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from BaseClient

#auth, #close_connection, #configure, #connect, #connected?, #initialize, #pending_commands?, #reconnect_connection, #select

Methods included from EventEmitter

#emit, #listeners, #on, #remove_all_listeners, #remove_listener

Constructor Details

This class inherits a constructor from EventMachine::Hiredis::BaseClient

Dynamic Method Handling

This class handles dynamic methods through the method_missing method in the class EventMachine::Hiredis::BaseClient

Class Method Details

.connect(host = 'localhost', port = 6379) ⇒ Object



3
4
5
# File 'lib/em-hiredis/client.rb', line 3

def self.connect(host = 'localhost', port = 6379)
  new(host, port).connect
end

Instance Method Details

#infoObject



12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/em-hiredis/client.rb', line 12

def info
  df = method_missing(:info)
  df.callback { |response|
    info = {}
    response.each_line do |line|
      key, value = line.split(":", 2)
      info[key.to_sym] = value.chomp if value
    end
    df.succeed(info)
  }
  df.callback { |info| yield info } if block_given?
  df
end

#info_commandstats(&blk) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/em-hiredis/client.rb', line 26

def info_commandstats(&blk)
  hash_processor = lambda do |response|
    commands = {}
    response.each_line do |line|
      command, data = line.split(':')
      if data
        c = commands[command.sub('cmdstat_', '').to_sym] = {}
        data.split(',').each do |d|
          k, v = d.split('=')
          c[k.to_sym] = v =~ /\./ ? v.to_f : v.to_i
        end
      end
    end
    blk.call(commands)
  end
  method_missing(:info, 'commandstats', &hash_processor)
end

#monitor(&blk) ⇒ Object



7
8
9
10
# File 'lib/em-hiredis/client.rb', line 7

def monitor(&blk)
  @monitoring = true
  method_missing(:monitor, &blk)
end

#psubscribe(channel) ⇒ Object



61
62
63
# File 'lib/em-hiredis/client.rb', line 61

def psubscribe(channel)
  raise "Use pubsub client"
end

#pubsubObject

Gives access to a richer interface for pubsub subscriptions on a separate redis connection



47
48
49
50
51
# File 'lib/em-hiredis/client.rb', line 47

def pubsub
  @pubsub ||= begin
    PubsubClient.new(@host, @port, @password, @db).connect
  end
end

#punsubscribe(channel) ⇒ Object



65
66
67
# File 'lib/em-hiredis/client.rb', line 65

def punsubscribe(channel)
  raise "Use pubsub client"
end

#subscribe(*channels) ⇒ Object



53
54
55
# File 'lib/em-hiredis/client.rb', line 53

def subscribe(*channels)
  raise "Use pubsub client"
end

#unsubscribe(*channels) ⇒ Object



57
58
59
# File 'lib/em-hiredis/client.rb', line 57

def unsubscribe(*channels)
  raise "Use pubsub client"
end