Class: TokyoTyrant::Balancer::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/tokyo_tyrant/balancer.rb

Direct Known Subclasses

DB, Table

Instance Method Summary collapse

Constructor Details

#initialize(servers = [], weights = {}) ⇒ Base

Returns a new instance of Base.



8
9
10
11
12
13
14
15
16
# File 'lib/tokyo_tyrant/balancer.rb', line 8

def initialize(servers = [], weights = {})
  servers.collect! do |server|
    host, port = server.split(':')
    klass.new(host, port.to_i)
  end
  @servers = servers
  # @ring = HashRing.new(servers, weights)
  @ring = FastHashRing.new(servers, weights)
end

Instance Method Details

#add_double(key, i = 1.0) ⇒ Object Also known as: adddouble



49
50
51
52
# File 'lib/tokyo_tyrant/balancer.rb', line 49

def add_double(key, i = 1.0)
  db = db_for_key(key)
  db.add_double(key, i)
end

#add_int(key, i = 1) ⇒ Object Also known as: addint, increment



37
38
39
40
# File 'lib/tokyo_tyrant/balancer.rb', line 37

def add_int(key, i = 1)
  db = db_for_key(key)
  db.add_int(key, i)
end

#check(key) ⇒ Object Also known as: has_key?, key?, include?, member?



131
132
133
# File 'lib/tokyo_tyrant/balancer.rb', line 131

def check(key)
  @servers.any?{ |server| server.check(key) }
end

#closeObject

Aggregate Methods



103
104
105
# File 'lib/tokyo_tyrant/balancer.rb', line 103

def close
  @servers.all?{ |server| server.close }
end

#db_for_key(key) ⇒ Object



26
27
28
# File 'lib/tokyo_tyrant/balancer.rb', line 26

def db_for_key(key)
  ring.get_node(key)
end

#delete_keys_with_prefix(prefix, max = -1)) ⇒ Object Also known as: dfwmkeys



147
148
149
150
# File 'lib/tokyo_tyrant/balancer.rb', line 147

def delete_keys_with_prefix(prefix, max = -1)
  @servers.each{ |server| server.delete_keys_with_prefix(prefix, max) }
  nil
end

#empty?Boolean

Returns:

  • (Boolean)


114
115
116
# File 'lib/tokyo_tyrant/balancer.rb', line 114

def empty?
  @servers.all?{ |server| server.empty? }
end

#fetch(key, &block) ⇒ Object



91
92
93
94
# File 'lib/tokyo_tyrant/balancer.rb', line 91

def fetch(key, &block)
  db = db_for_key(key)
  db.fetch(key, &block)
end

#fwmkeys(prefix, max = -1)) ⇒ Object



143
144
145
# File 'lib/tokyo_tyrant/balancer.rb', line 143

def fwmkeys(prefix, max = -1)
  @servers.collect{ |server| server.fwmkeys(prefix, max) }.flatten
end

#get(key) ⇒ Object Also known as: []

Delegate Methods



31
32
33
34
# File 'lib/tokyo_tyrant/balancer.rb', line 31

def get(key)
  db = db_for_key(key)
  db.get(key)
end

#get_double(key) ⇒ Object



55
56
57
58
# File 'lib/tokyo_tyrant/balancer.rb', line 55

def get_double(key)
  db = db_for_key(key)
  db.get_double(key)
end

#get_int(key) ⇒ Object



44
45
46
47
# File 'lib/tokyo_tyrant/balancer.rb', line 44

def get_int(key)
  db = db_for_key(key)
  db.get_int(key)
end

#keysObject



153
154
155
# File 'lib/tokyo_tyrant/balancer.rb', line 153

def keys
  @servers.collect{ |server| server.keys }.flatten.uniq
end

#optimize(*args) ⇒ Object



127
128
129
# File 'lib/tokyo_tyrant/balancer.rb', line 127

def optimize(*args)
  @servers.all?{ |server| server.optimize(*args) }
end

#out(key) ⇒ Object Also known as: delete



96
97
98
99
# File 'lib/tokyo_tyrant/balancer.rb', line 96

def out(key)
  db = db_for_key(key)
  db.out(key)
end

#put(key, value) ⇒ Object Also known as: []=



60
61
62
63
# File 'lib/tokyo_tyrant/balancer.rb', line 60

def put(key, value)
  db = db_for_key(key)
  db.put(key, value)
end

#putcat(key, value) ⇒ Object



71
72
73
74
# File 'lib/tokyo_tyrant/balancer.rb', line 71

def putcat(key, value)
  db = db_for_key(key)
  db.putcat(key, value)
end

#putkeep(key, value) ⇒ Object



66
67
68
69
# File 'lib/tokyo_tyrant/balancer.rb', line 66

def putkeep(key, value)
  db = db_for_key(key)
  db.putkeep(key, value)
end

#putnr(key, value) ⇒ Object



81
82
83
84
# File 'lib/tokyo_tyrant/balancer.rb', line 81

def putnr(key, value)
  db = db_for_key(key)
  db.putnr(key, value)
end

#putshl(key, value, width) ⇒ Object



76
77
78
79
# File 'lib/tokyo_tyrant/balancer.rb', line 76

def putshl(key, value, width)
  db = db_for_key(key)
  db.putshl(key, value, width)
end

#ringObject



18
19
20
# File 'lib/tokyo_tyrant/balancer.rb', line 18

def ring
  @ring
end

#rnumObject Also known as: count, size, length



107
108
109
# File 'lib/tokyo_tyrant/balancer.rb', line 107

def rnum
  @servers.collect{ |server| server.rnum }.inject(nil){ |sum,x| sum ? sum+x : x }
end

#serversObject



22
23
24
# File 'lib/tokyo_tyrant/balancer.rb', line 22

def servers
  @servers
end

#set_index(name, type) ⇒ Object



139
140
141
# File 'lib/tokyo_tyrant/balancer.rb', line 139

def set_index(name, type)
  @servers.all?{ |server| server.set_index(name, type) }
end

#syncObject



123
124
125
# File 'lib/tokyo_tyrant/balancer.rb', line 123

def sync
  @servers.each{ |server| server.sync }
end

#valuesObject



157
158
159
# File 'lib/tokyo_tyrant/balancer.rb', line 157

def values
  @servers.collect{ |server| server.values }.flatten.uniq
end

#vanishObject Also known as: clear



118
119
120
# File 'lib/tokyo_tyrant/balancer.rb', line 118

def vanish
  @servers.all?{ |server| server.vanish }
end

#vsiz(key) ⇒ Object



86
87
88
89
# File 'lib/tokyo_tyrant/balancer.rb', line 86

def vsiz(key)
  db = db_for_key(key)
  db.vsiz(key)
end