ruby-redis 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/README CHANGED
@@ -1,11 +1,11 @@
1
1
  This project was started because I needed an authenticating and routable
2
- proxy for Redis. The main feature is a high-performance, evented, pure-Ruby,
3
- implementation of the complete Redis wire protocol with the same interface as
2
+ proxy for Redis. The main feature is a high performance, eventable, pure Ruby,
3
+ implementation of the complete Redis wire protocol using the same interface as
4
4
  hiredis/reader.
5
5
 
6
6
  In the worst possible scenario of very small payloads, I was benching 30k GETs
7
7
  per second with pure ruby and 40k/s with hiredis/reader. With larger payloads,
8
- the performance gap narrows to zero. Not near-zero, actual zero.
8
+ the performance gap narrows to zero.
9
9
 
10
10
  Ruby Gem:
11
11
 
@@ -24,9 +24,9 @@ Client example:
24
24
 
25
25
  require 'redis'
26
26
  EventMachine.run {
27
- redis = EventMachine.connect '127.0.0.1', 6379, Redis
27
+ redis = EventMachine.connect '127.0.0.1', 6379, Redis::Client
28
28
  # Subscribe and publish messages will call here
29
- redis.pubsub_callback do |message|
29
+ redis.on_pubsub do |message|
30
30
  # case message[0]
31
31
  # when 'psubscribe' ...
32
32
  end
@@ -57,23 +57,24 @@ Fibers; compatible with em-synchrony:
57
57
 
58
58
  require 'redis/synchrony'
59
59
  Redis.synchrony {
60
- # Use redis to pipeline and sync to block
61
- redis = EventMachine.connect '127.0.0.1', 6379, Redis, :hiredis => true
60
+ # Be sure to pipeline commands when you can
61
+ redis = EventMachine.connect '127.0.0.1', 6379, Redis::Client
62
+ # synchronized requests will return result or raise exception
62
63
  sync = redis.synchrony
63
64
  # repeat transaction until success
64
- reply = nil
65
+ reply = check = nil
65
66
  until reply
66
- redis.watch 'mykey' # never fails, use pipeline
67
+ redis.watch 'mykey'
67
68
  x = sync.get('mykey').to_i
68
- reply = sync.multi_exec do |multi|
69
- # multi is pipelined (async)
70
- # no reason to block in here
71
- multi.set 'mykey', x + 1
72
- end
69
+ redis.multi
70
+ redis.set 'mykey', x + 1
71
+ redis.badcmd
72
+ redis.get('mykey') {|result| check=result}
73
+ reply = sync.exec
73
74
  end
74
75
  redis.close
75
- p reply
76
76
  EM.stop
77
+ p reply, check # ["OK", #<RuntimeError>, "4"], "4"
77
78
  }
78
79
 
79
80
 
data/lib/redis.rb CHANGED
@@ -1,215 +1,13 @@
1
- # for Ruby older than 1.9
2
- unless Kernel.respond_to?(:require_relative)
3
- module Kernel
4
- def require_relative(path)
5
- require File.join(File.dirname(caller[0]), path.to_str)
6
- end
7
- end
1
+ %w{redis/version redis/client}.each do |file|
2
+ require File.expand_path file, File.dirname(__FILE__)
8
3
  end
9
4
 
10
- require 'eventmachine'
11
- class Redis < EventMachine::Connection ; end
12
-
13
- require_relative 'redis/version'
14
- require_relative 'redis/reader'
15
- require_relative 'redis/sender'
16
-
17
- class Redis
18
-
19
- include Sender
20
-
21
- class Command
22
- include EventMachine::Deferrable
23
- def initialize connection
24
- @connection = connection
25
- self.errback do |msg|
26
- # game over on timeout
27
- @connection.close_connection unless msg
28
- end
29
- end
30
- # EventMachine older than 1.0.0.beta.4 doesn't return self
31
- test = self.new nil
32
- unless self === test.callback{}
33
- def callback; super; self; end
34
- def errback; super; self; end
35
- def timeout *args; super; self; end
36
- end
37
- end
38
-
39
- def initialize options={}
40
- if defined? Hiredis and defined? Hiredis::Reader
41
- @reader = Hiredis::Reader.new
42
- else
43
- @reader = Reader.new
44
- end
45
- @queue = []
46
- @pubsub_callback = proc{}
47
- end
48
-
49
- def unbind
50
- @queue.each { |d| d.fail RuntimeError.new 'connection closed' }
51
- @queue.clear
52
- end
53
-
54
- # Pub/Sub works by sending all orphaned messages to this callback.
55
- # It is simple and fast but not tolerant to programming errors.
56
- # Subclass Redis and/or create a defensive layer if you need to.
57
- def pubsub_callback &block
58
- @pubsub_callback = block
59
- end
60
-
61
- def receive_data data
62
- @reader.feed data
63
- until (data = @reader.gets) == false
64
- deferrable = @queue.shift
65
- if deferrable
66
- if Exception === data
67
- deferrable.fail data
68
- else
69
- deferrable.succeed data
70
- end
71
- else
72
- @pubsub_callback.call data
73
- end
74
- end
75
- rescue Exception => e
76
- @queue.shift.fail e unless @queue.empty?
77
- close_connection
78
- end
79
-
80
- def method_missing method, *args, &block
81
- deferrable = Command.new self
82
- if [:subscribe, :psubscribe, :unsubscribe, :punsubscribe].include? method
83
- deferrable.callback do |data|
84
- deferrable.succeed nil
85
- @pubsub_callback.call data
86
- end
87
- end
88
- if transform = self.class.transforms[method]
89
- deferrable.callback do |data|
90
- begin
91
- deferrable.succeed transform.call data
92
- rescue Exception => e
93
- deferrable.fail e
94
- end
95
- end
96
- end
97
- deferrable.callback &block if block
98
- @queue.push deferrable
99
- send_redis args.reduce([method]){ |arr, arg|
100
- if Hash === arg
101
- arr += arg.to_a.flatten 1
102
- else
103
- arr << arg
104
- end
105
- }
106
- deferrable
107
- end
108
-
109
- # Yielded by multi_exec to proxy and collect commands
110
- class Multi < Command
111
- include Enumerable
112
- def initialize *args
113
- super
114
- @commands = []
115
- end
116
- def each
117
- @commands.each {|x|yield x}
118
- end
119
- def size
120
- @commands.size
121
- end
122
- def method_missing method, *args, &block
123
- command = @connection.send method, *args, &block
124
- proxy = Command.new @connection
125
- command.callback do |status|
126
- @commands << proxy
127
- end
128
- command.errback do |err|
129
- @commands << err
130
- proxy.fail err
131
- end
132
- proxy
133
- end
134
- end
135
-
136
- # Wrap around multi and exec. Leaves the raw calls
137
- # to multi and exec open for custom implementations.
138
- def multi_exec
139
- self.multi.errback do |r|
140
- # This usually happens in the case of a programming error.
141
- # Sometimes it is called when the connection breaks.
142
- self.close_connection
143
- end
144
- error = nil
145
- begin
146
- yield redis_multi = Multi.new(self)
147
- rescue Exception => e
148
- error = e
149
- end
150
- redis_exec = self.exec
151
- if error
152
- EM.next_tick { redis_exec.fail error }
153
- end
154
- redis_exec.callback do |results|
155
- # Normalized results include syntax errors and original references.
156
- # Command callbacks are meant to run before exec callbacks.
157
- if results == nil
158
- redis_exec.succeed nil
159
- else
160
- normalized_results = []
161
- redis_multi.each do |command|
162
- if Exception === command
163
- normalized_results << command
164
- else
165
- result = results.shift
166
- normalized_results << result
167
- if Exception === result
168
- command.fail result
169
- else
170
- command.succeed result
171
- end
172
- end
173
- end
174
- redis_exec.succeed normalized_results
175
- end
176
- end
177
- end
5
+ module Redis
178
6
 
179
- # Some data is best transformed into a Ruby type. You can set up global
180
- # transforms here that are automatically attached to command callbacks.
181
- # Redis.transforms[:mycustom1] = Redis.transforms[:exists] # boolean
182
- # Redis.transforms[:mycustom2] = proc { |data| MyType.new data }
183
- def self.transforms
184
- @@transforms ||= lambda {
185
- boolean = lambda { |tf| tf[0] == 1 ? true : false }
186
- hash = lambda { |hash| Hash[*hash] }
187
- {
188
- #keys
189
- :exists => boolean,
190
- :expire => boolean,
191
- :expireat => boolean,
192
- :move => boolean,
193
- :persist => boolean,
194
- :renamenx => boolean,
195
- #strings
196
- :msetnx => boolean,
197
- :setnx => boolean,
198
- #hashes
199
- :hexists => boolean,
200
- :hgetall => hash,
201
- :hset => boolean,
202
- :hsetnx => boolean,
203
- #sets
204
- :sismember => boolean,
205
- :smove => boolean,
206
- :srem => boolean,
207
- #zsets
208
- :zrem => boolean,
209
- }
210
- }.call
211
- end
7
+ # This space intentionally blank
212
8
 
9
+ # Server entry in redis/bin.rb
10
+ # Client entry in redis/client.rb
213
11
 
214
12
  end
215
13
 
data/lib/redis/bin.rb CHANGED
@@ -1,13 +1,45 @@
1
- require File.expand_path '../redis', File.dirname(__FILE__)
2
- require_relative 'config'
3
- require_relative 'connection'
4
- require_relative 'logger'
1
+ %w{reader sender version config logger strict connection protocol database
2
+ server keys strings lists sets zsets hashes pubsub}.each do |file|
3
+ require File.expand_path file, File.dirname(__FILE__)
4
+ end
5
5
 
6
- class Redis
6
+ module Redis
7
7
  class Bin
8
8
 
9
- class StrictConnection < Connection
9
+ class RubyRedisServer < EventMachine::Connection
10
+
10
11
  include Strict
12
+ include Connection
13
+ include Protocol
14
+ include Sender
15
+
16
+ def initialize logger, databases, config={}
17
+ @logger = logger
18
+ @databases = databases
19
+ @database = databases[0]
20
+ @config = config
21
+ super
22
+ end
23
+
24
+ def post_init
25
+ authorized nil
26
+ set_comm_inactivity_timeout @config[:timeout]
27
+ end
28
+
29
+ def authorized password
30
+ return true if @authorized
31
+ return false unless @config[:requirepass] == password
32
+ extend Server
33
+ extend Keys
34
+ extend Strings
35
+ extend Lists
36
+ extend Sets
37
+ extend ZSets
38
+ extend Hashes
39
+ extend PubSub
40
+ @authorized = true
41
+ end
42
+
11
43
  end
12
44
 
13
45
  def self.server
@@ -28,44 +60,62 @@ class Redis
28
60
  config = Config.new(ARGV.empty? ? [] : ARGF)
29
61
 
30
62
  Dir.chdir config[:dir]
63
+
64
+ if config[:logfile] == 'stdout'
65
+ logger = Logger.new STDOUT
66
+ else
67
+ logger = Logger.new config[:logfile]
68
+ end
31
69
 
32
- Redis.logger config[:logfile] unless config[:logfile] == 'stdout'
33
-
34
- #TODO
35
- # Set server verbosity to 'debug'
36
- # it can be one of:
37
- # debug (a lot of information, useful for development/testing)
38
- # verbose (many rarely useful info, but not a mess like the debug level)
39
- # notice (moderately verbose, what you want in production probably)
40
- # warning (only very important / critical messages are logged)
41
- # loglevel verbose
70
+ if config[:loglevel] == 'debug'
71
+ logger.level = Logger::DEBUG
72
+ elsif config[:loglevel] == 'notice'
73
+ logger.level = Logger::NOTICE
74
+ elsif config[:loglevel] == 'warning'
75
+ logger.level = Logger::WARNING
76
+ elsif config[:loglevel] != 'verbose'
77
+ raise "Invalid log level. Must be one of debug, notice, warning, verbose."
78
+ else
79
+ logger.level = Logger::INFO
80
+ end
42
81
 
43
82
  if show_no_config_warning
44
- Redis.logger.warn "Warning: no config file specified, using the default config. In order to specify a config file use 'ruby-redis /path/to/redis.conf'"
83
+ logger.warn "Warning: no config file specified, using the default config. In order to specify a config file use 'ruby-redis /path/to/redis.conf'"
45
84
  end
46
-
47
- EventMachine.epoll
48
- EventMachine.run {
49
-
50
- (0...config[:databases]).each do |db_index|
51
- Redis.databases[db_index] ||= Database.new
85
+
86
+ if config[:daemonize]
87
+ exit!(0) if fork
88
+ Process::setsid
89
+ exit!(0) if fork
90
+ STDIN.reopen("/dev/null")
91
+ STDOUT.reopen("/dev/null", "w")
92
+ STDERR.reopen("/dev/null", "w")
93
+ begin
94
+ File.open(config[:pidfile], 'w') do |io|
95
+ io.write "%d\n" % Process.pid
96
+ end
97
+ rescue Exception => e
98
+ logger.error e.message
52
99
  end
100
+ end
101
+
102
+ EventMachine.run {
53
103
 
54
- #TODO support changing host and EventMachine::start_unix_domain_server
55
- EventMachine::start_server "127.0.0.1", config[:port], StrictConnection, config[:requirepass]
56
-
57
- if config[:daemonize]
58
- raise 'todo'
59
- # daemonize();
60
- # FILE *fp = fopen(server.pidfile,"w");
61
- # if (fp) { fprintf(fp,"%d\n",(int)getpid()); fclose(fp); }
104
+ databases = Array.new(config[:databases]) {Database.new}
105
+ started_message = "Server started, Ruby Redis version %s" % Redis::VERSION
106
+
107
+ if config[:unixsocket]
108
+ EventMachine::start_server config[:unixsocket], RubyRedisServer, logger, databases, config
109
+ logger.notice started_message
110
+ logger.notice "The server is now ready to accept connections at %s" % config[:unixsocket]
111
+ else
112
+ EventMachine::start_server config[:bind], config[:port], RubyRedisServer, logger, databases, config
113
+ logger.notice started_message
114
+ logger.notice "The server is now ready to accept connections on port %d" % config[:port]
62
115
  end
63
116
 
64
- Redis.logger.notice "Server started, Ruby Redis version %s" % Redis::VERSION
65
- Redis.logger.notice "The server is now ready to accept connections on port %d" % config[:port]
66
-
67
117
  # The test suite blocks until it gets the pid from the log.
68
- Redis.logger.flush
118
+ logger.flush
69
119
 
70
120
  }
71
121
 
data/lib/redis/bin.rbc CHANGED
@@ -1,6 +1,6 @@
1
1
  !RBIX
2
- 6235178746665710376
3
- x
2
+ 8948944263761558646
3
+ 18
4
4
  M
5
5
  1
6
6
  n
@@ -9,90 +9,99 @@ x
9
9
  10
10
10
  __script__
11
11
  i
12
- 81
13
- 5
14
- 45
12
+ 88
13
+ 7
15
14
  0
15
+ 64
16
+ 7
16
17
  1
18
+ 64
17
19
  7
18
20
  2
19
21
  64
20
- 45
21
- 0
22
+ 7
22
23
  3
23
- 65
24
- 49
24
+ 64
25
+ 7
25
26
  4
26
- 0
27
- 49
27
+ 64
28
+ 7
28
29
  5
29
- 1
30
- 49
30
+ 64
31
+ 7
31
32
  6
32
- 2
33
- 47
34
- 49
33
+ 64
35
34
  7
36
- 1
37
- 15
38
- 5
35
+ 7
36
+ 64
39
37
  7
40
38
  8
41
39
  64
42
- 47
43
- 49
40
+ 7
44
41
  9
45
- 1
46
- 15
47
- 5
42
+ 64
48
43
  7
49
44
  10
50
45
  64
51
- 47
52
- 49
53
- 9
54
- 1
55
- 15
56
- 5
57
46
  7
58
47
  11
59
48
  64
60
- 47
61
- 49
62
- 9
63
- 1
49
+ 7
50
+ 12
51
+ 64
52
+ 7
53
+ 13
54
+ 64
55
+ 7
56
+ 14
57
+ 64
58
+ 7
59
+ 15
60
+ 64
61
+ 7
62
+ 16
63
+ 64
64
+ 35
65
+ 17
66
+ 56
67
+ 17
68
+ 50
69
+ 18
70
+ 0
64
71
  15
65
72
  99
66
73
  7
67
- 12
74
+ 19
68
75
  1
69
76
  65
70
77
  49
71
- 13
78
+ 20
72
79
  3
73
80
  13
74
81
  99
75
82
  12
76
83
  7
77
- 14
84
+ 21
78
85
  12
79
86
  7
80
- 15
87
+ 22
81
88
  12
82
89
  65
83
90
  12
84
91
  49
85
- 16
92
+ 23
86
93
  4
87
94
  15
88
95
  49
89
- 14
96
+ 21
90
97
  0
91
98
  15
92
99
  2
93
100
  11
94
101
  I
95
- 6
102
+ 11
103
+ I
104
+ 0
96
105
  I
97
106
  0
98
107
  I
@@ -101,14 +110,117 @@ I
101
110
  0
102
111
  n
103
112
  p
104
- 17
113
+ 24
114
+ s
115
+ 6
116
+ reader
117
+ s
118
+ 6
119
+ sender
120
+ s
121
+ 7
122
+ version
123
+ s
124
+ 6
125
+ config
126
+ s
127
+ 6
128
+ logger
129
+ s
130
+ 6
131
+ strict
132
+ s
133
+ 10
134
+ connection
135
+ s
136
+ 8
137
+ protocol
138
+ s
139
+ 8
140
+ database
141
+ s
142
+ 6
143
+ server
144
+ s
145
+ 4
146
+ keys
147
+ s
148
+ 7
149
+ strings
150
+ s
151
+ 5
152
+ lists
153
+ s
154
+ 4
155
+ sets
156
+ s
157
+ 5
158
+ zsets
159
+ s
160
+ 6
161
+ hashes
162
+ s
163
+ 6
164
+ pubsub
165
+ M
166
+ 1
167
+ p
168
+ 2
169
+ x
170
+ 9
171
+ for_block
172
+ t
173
+ n
174
+ x
175
+ 9
176
+ __block__
177
+ i
178
+ 28
179
+ 57
180
+ 19
181
+ 0
182
+ 15
183
+ 5
184
+ 45
185
+ 0
186
+ 1
187
+ 20
188
+ 0
189
+ 45
190
+ 0
191
+ 2
192
+ 65
193
+ 49
194
+ 3
195
+ 0
196
+ 49
197
+ 4
198
+ 1
199
+ 49
200
+ 5
201
+ 2
202
+ 47
203
+ 49
204
+ 6
205
+ 1
206
+ 11
207
+ I
208
+ 7
209
+ I
210
+ 1
211
+ I
212
+ 1
213
+ I
214
+ 0
215
+ I
216
+ 1
217
+ n
218
+ p
219
+ 7
105
220
  x
106
221
  4
107
222
  File
108
223
  n
109
- s
110
- 8
111
- ../redis
112
224
  n
113
225
  x
114
226
  11
@@ -122,18 +234,33 @@ expand_path
122
234
  x
123
235
  7
124
236
  require
125
- s
126
- 6
127
- config
237
+ p
238
+ 7
239
+ I
240
+ 0
241
+ I
242
+ 1
243
+ I
244
+ 1
245
+ I
246
+ 2
247
+ I
248
+ 4
249
+ I
250
+ 3
251
+ I
252
+ 1c
128
253
  x
129
- 16
130
- require_relative
131
- s
132
- 10
133
- connection
134
- s
135
- 6
136
- logger
254
+ 49
255
+ /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
256
+ p
257
+ 1
258
+ x
259
+ 4
260
+ file
261
+ x
262
+ 4
263
+ each
137
264
  x
138
265
  5
139
266
  Redis
@@ -189,6 +316,8 @@ I
189
316
  0
190
317
  I
191
318
  0
319
+ I
320
+ 0
192
321
  n
193
322
  p
194
323
  5
@@ -209,7 +338,7 @@ x
209
338
  3
210
339
  Bin
211
340
  i
212
- 42
341
+ 44
213
342
  5
214
343
  66
215
344
  99
@@ -218,38 +347,40 @@ i
218
347
  45
219
348
  1
220
349
  2
350
+ 43
351
+ 3
221
352
  65
222
353
  49
223
- 3
354
+ 4
224
355
  3
225
356
  13
226
357
  99
227
358
  12
228
359
  7
229
- 4
360
+ 5
230
361
  12
231
362
  7
232
- 5
363
+ 6
233
364
  12
234
365
  65
235
366
  12
236
367
  49
237
- 6
368
+ 7
238
369
  4
239
370
  15
240
371
  49
241
- 4
372
+ 5
242
373
  0
243
374
  15
244
375
  99
245
376
  7
246
- 7
247
- 7
248
377
  8
378
+ 7
379
+ 9
249
380
  65
250
381
  5
251
382
  49
252
- 6
383
+ 7
253
384
  4
254
385
  11
255
386
  I
@@ -260,16 +391,21 @@ I
260
391
  0
261
392
  I
262
393
  0
394
+ I
395
+ 0
263
396
  n
264
397
  p
265
- 9
398
+ 10
266
399
  x
267
- 16
268
- StrictConnection
400
+ 15
401
+ RubyRedisServer
402
+ x
403
+ 12
404
+ EventMachine
405
+ n
269
406
  x
270
407
  10
271
408
  Connection
272
- n
273
409
  x
274
410
  10
275
411
  open_class
@@ -281,10 +417,10 @@ M
281
417
  n
282
418
  n
283
419
  x
284
- 16
285
- StrictConnection
420
+ 15
421
+ RubyRedisServer
286
422
  i
287
- 11
423
+ 80
288
424
  5
289
425
  66
290
426
  5
@@ -295,9 +431,80 @@ i
295
431
  49
296
432
  2
297
433
  1
434
+ 15
435
+ 5
436
+ 45
437
+ 3
438
+ 4
439
+ 47
440
+ 49
441
+ 2
442
+ 1
443
+ 15
444
+ 5
445
+ 45
446
+ 5
447
+ 6
448
+ 47
449
+ 49
450
+ 2
451
+ 1
452
+ 15
453
+ 5
454
+ 45
455
+ 7
456
+ 8
457
+ 47
458
+ 49
459
+ 2
460
+ 1
461
+ 15
462
+ 99
463
+ 7
464
+ 9
465
+ 7
466
+ 10
467
+ 65
468
+ 67
469
+ 49
470
+ 11
471
+ 0
472
+ 49
473
+ 12
474
+ 4
475
+ 15
476
+ 99
477
+ 7
478
+ 13
479
+ 7
480
+ 14
481
+ 65
482
+ 67
483
+ 49
484
+ 11
485
+ 0
486
+ 49
487
+ 12
488
+ 4
489
+ 15
490
+ 99
491
+ 7
492
+ 15
493
+ 7
494
+ 16
495
+ 65
496
+ 67
497
+ 49
498
+ 11
499
+ 0
500
+ 49
501
+ 12
502
+ 4
298
503
  11
299
504
  I
300
- 2
505
+ 5
506
+ I
507
+ 0
301
508
  I
302
509
  0
303
510
  I
@@ -306,7 +513,7 @@ I
306
513
  0
307
514
  n
308
515
  p
309
- 3
516
+ 17
310
517
  x
311
518
  6
312
519
  Strict
@@ -314,423 +521,1518 @@ n
314
521
  x
315
522
  7
316
523
  include
317
- p
524
+ x
525
+ 10
526
+ Connection
527
+ n
528
+ x
529
+ 8
530
+ Protocol
531
+ n
532
+ x
533
+ 6
534
+ Sender
535
+ n
536
+ x
537
+ 10
538
+ initialize
539
+ M
540
+ 1
541
+ n
542
+ n
543
+ x
544
+ 10
545
+ initialize
546
+ i
547
+ 28
548
+ 23
549
+ 1
550
+ 10
551
+ 14
552
+ 44
553
+ 43
554
+ 0
555
+ 78
556
+ 49
557
+ 1
558
+ 1
559
+ 19
560
+ 1
561
+ 15
562
+ 20
563
+ 0
564
+ 38
565
+ 2
566
+ 15
567
+ 20
568
+ 1
569
+ 38
318
570
  3
571
+ 15
572
+ 54
573
+ 89
574
+ 4
575
+ 11
576
+ I
577
+ 4
319
578
  I
320
579
  2
321
580
  I
322
- a
581
+ 1
323
582
  I
324
- b
583
+ 0
584
+ I
585
+ 2
586
+ n
587
+ p
588
+ 5
589
+ x
590
+ 4
591
+ Hash
592
+ x
593
+ 16
594
+ new_from_literal
595
+ x
596
+ 10
597
+ @databases
598
+ x
599
+ 7
600
+ @config
601
+ x
602
+ 10
603
+ initialize
604
+ p
605
+ 9
606
+ I
607
+ -1
608
+ I
609
+ 10
610
+ I
611
+ e
612
+ I
613
+ 11
614
+ I
615
+ 13
616
+ I
617
+ 12
618
+ I
619
+ 18
620
+ I
621
+ 13
622
+ I
623
+ 1c
325
624
  x
326
625
  49
327
626
  /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
328
627
  p
329
- 0
628
+ 2
330
629
  x
331
- 13
332
- attach_method
630
+ 9
631
+ databases
333
632
  x
334
633
  6
335
- server
634
+ config
635
+ x
636
+ 17
637
+ method_visibility
638
+ x
639
+ 15
640
+ add_defn_method
641
+ x
642
+ 9
643
+ post_init
336
644
  M
337
645
  1
338
646
  n
339
647
  n
340
648
  x
341
- 6
342
- server
649
+ 9
650
+ post_init
343
651
  i
344
- 258
652
+ 33
345
653
  45
346
654
  0
347
655
  1
348
- 7
656
+ 49
349
657
  2
350
- 64
351
- 35
352
- 1
353
- 83
354
- 3
355
- 13
356
- 10
357
- 24
358
- 15
359
- 45
360
658
  0
361
- 4
362
- 7
363
- 5
364
- 64
365
- 35
366
- 1
367
- 83
659
+ 78
660
+ 49
368
661
  3
369
- 9
370
- 51
662
+ 1
663
+ 38
664
+ 4
665
+ 15
371
666
  5
372
- 7
373
- 6
374
- 64
375
- 45
376
- 7
377
- 8
378
- 43
379
- 9
380
- 49
381
- 10
382
667
  1
383
668
  47
384
669
  49
385
- 11
670
+ 5
386
671
  1
387
672
  15
388
673
  5
389
- 78
390
- 47
674
+ 39
675
+ 6
676
+ 7
677
+ 7
391
678
  49
392
- 12
679
+ 3
393
680
  1
681
+ 47
682
+ 49
394
683
  8
395
- 52
396
- 1
397
- 15
398
- 45
399
- 0
400
- 13
401
- 7
402
- 14
403
- 64
404
- 35
405
684
  1
406
- 83
685
+ 11
686
+ I
407
687
  3
408
- 13
409
- 10
410
- 76
411
- 15
412
- 45
688
+ I
413
689
  0
414
- 15
415
- 49
416
- 16
690
+ I
417
691
  0
418
- 79
419
- 85
420
- 17
421
- 9
422
- 106
423
- 45
692
+ I
693
+ 0
694
+ I
695
+ 0
696
+ n
697
+ p
698
+ 9
699
+ x
700
+ 5
701
+ Redis
702
+ n
703
+ x
704
+ 9
705
+ databases
706
+ x
707
+ 2
708
+ []
709
+ x
710
+ 9
711
+ @database
712
+ x
713
+ 10
714
+ authorized
715
+ x
716
+ 7
717
+ @config
718
+ x
719
+ 7
720
+ timeout
721
+ x
722
+ 27
723
+ set_comm_inactivity_timeout
724
+ p
725
+ 9
726
+ I
727
+ -1
728
+ I
729
+ 16
730
+ I
731
+ 0
732
+ I
733
+ 17
734
+ I
735
+ d
736
+ I
424
737
  18
738
+ I
739
+ 14
740
+ I
425
741
  19
426
- 7
427
- 20
428
- 64
742
+ I
743
+ 21
744
+ x
429
745
  49
746
+ /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
747
+ p
748
+ 0
749
+ x
750
+ 10
751
+ authorized
752
+ M
753
+ 1
754
+ n
755
+ n
756
+ x
757
+ 10
758
+ authorized
759
+ i
760
+ 105
761
+ 39
762
+ 0
763
+ 9
764
+ 8
765
+ 2
430
766
  11
767
+ 8
768
+ 9
431
769
  1
432
770
  15
433
- 45
434
- 18
435
- 21
771
+ 39
772
+ 1
436
773
  7
437
- 22
438
- 64
774
+ 2
439
775
  49
440
- 11
776
+ 3
441
777
  1
778
+ 20
779
+ 0
780
+ 83
781
+ 4
782
+ 9
783
+ 26
784
+ 1
785
+ 8
786
+ 28
787
+ 3
788
+ 11
442
789
  15
443
790
  5
444
- 79
791
+ 45
792
+ 5
793
+ 6
445
794
  47
446
795
  49
447
- 12
796
+ 7
448
797
  1
798
+ 15
799
+ 5
800
+ 45
449
801
  8
450
- 107
802
+ 9
803
+ 47
804
+ 49
805
+ 7
451
806
  1
452
807
  15
808
+ 5
453
809
  45
454
- 0
455
- 23
810
+ 10
811
+ 11
812
+ 47
456
813
  49
457
- 16
458
- 0
459
- 78
460
- 83
461
- 3
462
- 19
463
- 0
814
+ 7
815
+ 1
464
816
  15
817
+ 5
465
818
  45
466
- 24
467
- 25
819
+ 12
468
820
  13
469
- 71
470
- 26
471
- 47
472
- 9
473
- 156
474
821
  47
475
822
  49
476
- 27
477
- 0
478
- 13
479
- 45
480
- 0
481
- 28
482
- 49
483
- 29
484
- 0
485
- 9
486
- 146
487
- 35
488
- 0
489
- 8
490
- 149
823
+ 7
824
+ 1
825
+ 15
826
+ 5
491
827
  45
492
- 30
493
- 31
828
+ 14
829
+ 15
494
830
  47
495
831
  49
496
- 32
832
+ 7
497
833
  1
498
834
  15
499
- 8
500
- 174
501
- 45
502
- 0
503
- 33
504
- 49
505
- 29
506
- 0
507
- 9
508
- 168
509
- 35
510
- 0
511
- 8
512
- 171
835
+ 5
513
836
  45
514
- 30
515
- 34
837
+ 16
838
+ 17
839
+ 47
516
840
  49
517
- 26
841
+ 7
518
842
  1
843
+ 15
844
+ 5
845
+ 45
846
+ 18
519
847
  19
848
+ 47
849
+ 49
850
+ 7
520
851
  1
521
852
  15
853
+ 5
522
854
  45
523
- 35
524
- 36
525
855
  20
526
- 1
527
- 7
528
- 37
529
- 49
530
- 38
531
- 1
856
+ 21
857
+ 47
532
858
  49
533
- 39
859
+ 7
534
860
  1
535
861
  15
536
- 20
537
- 1
538
- 7
539
- 40
540
- 49
862
+ 2
541
863
  38
542
- 1
543
- 7
544
- 41
545
- 64
546
- 83
864
+ 0
865
+ 11
866
+ I
547
867
  3
548
- 9
549
- 208
868
+ I
550
869
  1
551
- 8
552
- 221
553
- 45
554
- 7
555
- 42
556
- 20
870
+ I
557
871
  1
558
- 7
559
- 40
560
- 49
561
- 38
872
+ I
873
+ 0
874
+ I
562
875
  1
563
- 49
564
- 43
876
+ n
877
+ p
878
+ 22
879
+ x
880
+ 11
881
+ @authorized
882
+ x
883
+ 7
884
+ @config
885
+ x
886
+ 11
887
+ requirepass
888
+ x
889
+ 2
890
+ []
891
+ x
892
+ 2
893
+ ==
894
+ x
895
+ 6
896
+ Server
897
+ n
898
+ x
899
+ 6
900
+ extend
901
+ x
902
+ 4
903
+ Keys
904
+ n
905
+ x
906
+ 7
907
+ Strings
908
+ n
909
+ x
910
+ 5
911
+ Lists
912
+ n
913
+ x
914
+ 4
915
+ Sets
916
+ n
917
+ x
918
+ 5
919
+ ZSets
920
+ n
921
+ x
922
+ 6
923
+ Hashes
924
+ n
925
+ x
926
+ 6
927
+ PubSub
928
+ n
929
+ p
930
+ 29
931
+ I
932
+ -1
933
+ I
934
+ 1c
935
+ I
936
+ 0
937
+ I
938
+ 1d
939
+ I
940
+ 9
941
+ I
942
+ 0
943
+ I
944
+ a
945
+ I
946
+ 1e
947
+ I
948
+ 1c
949
+ I
950
+ 0
951
+ I
952
+ 1d
953
+ I
954
+ 1f
955
+ I
956
+ 26
957
+ I
958
+ 20
959
+ I
960
+ 2f
961
+ I
962
+ 21
963
+ I
964
+ 38
965
+ I
966
+ 22
967
+ I
968
+ 41
969
+ I
970
+ 23
971
+ I
972
+ 4a
973
+ I
974
+ 24
975
+ I
976
+ 53
977
+ I
978
+ 25
979
+ I
980
+ 5c
981
+ I
982
+ 26
983
+ I
984
+ 65
985
+ I
986
+ 27
987
+ I
988
+ 69
989
+ x
990
+ 49
991
+ /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
992
+ p
993
+ 1
994
+ x
995
+ 8
996
+ password
997
+ p
998
+ 15
999
+ I
1000
+ 2
1001
+ I
1002
+ b
1003
+ I
1004
+ b
1005
+ I
1006
+ c
1007
+ I
1008
+ 14
1009
+ I
1010
+ d
1011
+ I
1012
+ 1d
1013
+ I
1014
+ e
1015
+ I
1016
+ 26
1017
+ I
1018
+ 10
1019
+ I
1020
+ 34
1021
+ I
1022
+ 16
1023
+ I
1024
+ 42
1025
+ I
1026
+ 1c
1027
+ I
1028
+ 50
1029
+ x
1030
+ 49
1031
+ /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
1032
+ p
1033
+ 0
1034
+ x
1035
+ 13
1036
+ attach_method
1037
+ x
1038
+ 6
1039
+ server
1040
+ M
1041
+ 1
1042
+ n
1043
+ n
1044
+ x
1045
+ 6
1046
+ server
1047
+ i
1048
+ 581
1049
+ 45
1050
+ 0
1051
+ 1
1052
+ 7
1053
+ 2
1054
+ 64
1055
+ 35
1056
+ 1
1057
+ 83
1058
+ 3
1059
+ 13
1060
+ 10
1061
+ 24
1062
+ 15
1063
+ 45
1064
+ 0
1065
+ 4
1066
+ 7
1067
+ 5
1068
+ 64
1069
+ 35
1070
+ 1
1071
+ 83
1072
+ 3
1073
+ 9
1074
+ 51
1075
+ 5
1076
+ 7
1077
+ 6
1078
+ 64
1079
+ 45
1080
+ 7
1081
+ 8
1082
+ 43
1083
+ 9
1084
+ 49
1085
+ 10
1086
+ 1
1087
+ 47
1088
+ 49
1089
+ 11
1090
+ 1
1091
+ 15
1092
+ 5
1093
+ 78
1094
+ 47
1095
+ 49
1096
+ 12
1097
+ 1
1098
+ 8
1099
+ 52
1100
+ 1
1101
+ 15
1102
+ 45
1103
+ 0
1104
+ 13
1105
+ 7
1106
+ 14
1107
+ 64
1108
+ 35
1109
+ 1
1110
+ 83
1111
+ 3
1112
+ 13
1113
+ 10
1114
+ 76
1115
+ 15
1116
+ 45
1117
+ 0
1118
+ 15
1119
+ 49
1120
+ 16
1121
+ 0
1122
+ 79
1123
+ 85
1124
+ 17
1125
+ 9
1126
+ 106
1127
+ 45
1128
+ 18
1129
+ 19
1130
+ 7
1131
+ 20
1132
+ 64
1133
+ 49
1134
+ 11
1135
+ 1
1136
+ 15
1137
+ 45
1138
+ 18
1139
+ 21
1140
+ 7
1141
+ 22
1142
+ 64
1143
+ 49
1144
+ 11
1145
+ 1
1146
+ 15
1147
+ 5
1148
+ 79
1149
+ 47
1150
+ 49
1151
+ 12
1152
+ 1
1153
+ 8
1154
+ 107
1155
+ 1
1156
+ 15
1157
+ 45
1158
+ 0
1159
+ 23
1160
+ 49
1161
+ 16
1162
+ 0
1163
+ 78
1164
+ 83
1165
+ 3
1166
+ 19
1167
+ 0
1168
+ 15
1169
+ 45
1170
+ 24
1171
+ 25
1172
+ 13
1173
+ 71
1174
+ 26
1175
+ 47
1176
+ 9
1177
+ 156
1178
+ 47
1179
+ 49
1180
+ 27
1181
+ 0
1182
+ 13
1183
+ 45
1184
+ 0
1185
+ 28
1186
+ 49
1187
+ 29
1188
+ 0
1189
+ 9
1190
+ 146
1191
+ 35
1192
+ 0
1193
+ 8
1194
+ 149
1195
+ 45
1196
+ 30
1197
+ 31
1198
+ 47
1199
+ 49
1200
+ 32
1201
+ 1
1202
+ 15
1203
+ 8
1204
+ 174
1205
+ 45
1206
+ 0
1207
+ 33
1208
+ 49
1209
+ 29
1210
+ 0
1211
+ 9
1212
+ 168
1213
+ 35
1214
+ 0
1215
+ 8
1216
+ 171
1217
+ 45
1218
+ 30
1219
+ 34
1220
+ 49
1221
+ 26
1222
+ 1
1223
+ 19
1224
+ 1
1225
+ 15
1226
+ 20
1227
+ 1
1228
+ 7
1229
+ 35
1230
+ 49
1231
+ 36
1232
+ 1
1233
+ 7
1234
+ 37
1235
+ 64
1236
+ 83
1237
+ 3
1238
+ 9
1239
+ 211
1240
+ 45
1241
+ 7
1242
+ 38
1243
+ 49
1244
+ 39
1245
+ 0
1246
+ 45
1247
+ 40
1248
+ 41
1249
+ 43
1250
+ 42
1251
+ 13
1252
+ 18
1253
+ 2
1254
+ 49
1255
+ 43
1256
+ 1
1257
+ 15
1258
+ 8
1259
+ 327
1260
+ 20
1261
+ 1
1262
+ 7
1263
+ 35
1264
+ 49
1265
+ 36
1266
+ 1
1267
+ 7
1268
+ 44
1269
+ 64
1270
+ 83
1271
+ 3
1272
+ 9
1273
+ 245
1274
+ 45
1275
+ 7
1276
+ 45
1277
+ 49
1278
+ 39
1279
+ 0
1280
+ 45
1281
+ 40
1282
+ 46
1283
+ 43
1284
+ 47
1285
+ 13
1286
+ 18
1287
+ 2
1288
+ 49
1289
+ 43
1290
+ 1
1291
+ 15
1292
+ 8
1293
+ 327
1294
+ 20
1295
+ 1
1296
+ 7
1297
+ 35
1298
+ 49
1299
+ 36
1300
+ 1
1301
+ 7
1302
+ 48
1303
+ 64
1304
+ 83
1305
+ 3
1306
+ 9
1307
+ 279
1308
+ 45
1309
+ 7
1310
+ 49
1311
+ 49
1312
+ 39
1313
+ 0
1314
+ 45
1315
+ 40
1316
+ 50
1317
+ 43
1318
+ 51
1319
+ 13
1320
+ 18
1321
+ 2
1322
+ 49
1323
+ 43
1324
+ 1
1325
+ 15
1326
+ 8
1327
+ 327
1328
+ 20
1329
+ 1
1330
+ 7
1331
+ 35
1332
+ 49
1333
+ 36
1334
+ 1
1335
+ 7
1336
+ 52
1337
+ 64
1338
+ 83
1339
+ 3
1340
+ 10
1341
+ 296
1342
+ 2
1343
+ 8
1344
+ 297
1345
+ 3
1346
+ 9
1347
+ 309
1348
+ 5
1349
+ 7
1350
+ 53
1351
+ 64
1352
+ 47
1353
+ 49
1354
+ 54
1355
+ 1
1356
+ 8
1357
+ 327
1358
+ 45
1359
+ 7
1360
+ 55
1361
+ 49
1362
+ 39
1363
+ 0
1364
+ 45
1365
+ 40
1366
+ 56
1367
+ 43
1368
+ 57
1369
+ 13
1370
+ 18
1371
+ 2
1372
+ 49
1373
+ 43
1374
+ 1
1375
+ 15
1376
+ 15
1377
+ 45
1378
+ 58
1379
+ 59
1380
+ 20
1381
+ 1
1382
+ 7
1383
+ 60
1384
+ 49
1385
+ 36
1386
+ 1
1387
+ 49
1388
+ 61
1389
+ 1
1390
+ 15
1391
+ 20
1392
+ 1
1393
+ 7
1394
+ 62
1395
+ 49
1396
+ 36
1397
+ 1
1398
+ 7
1399
+ 63
1400
+ 64
1401
+ 83
1402
+ 3
1403
+ 9
1404
+ 359
1405
+ 1
1406
+ 8
1407
+ 372
1408
+ 45
1409
+ 7
1410
+ 64
1411
+ 20
1412
+ 1
1413
+ 7
1414
+ 62
1415
+ 49
1416
+ 36
1417
+ 1
1418
+ 49
1419
+ 39
1420
+ 1
1421
+ 15
1422
+ 20
1423
+ 0
1424
+ 9
1425
+ 391
1426
+ 45
1427
+ 7
1428
+ 65
1429
+ 49
1430
+ 39
1431
+ 0
1432
+ 7
1433
+ 66
1434
+ 64
1435
+ 49
1436
+ 67
1437
+ 1
1438
+ 8
1439
+ 392
1440
+ 1
1441
+ 15
1442
+ 45
1443
+ 68
1444
+ 69
1445
+ 20
1446
+ 1
1447
+ 7
1448
+ 70
1449
+ 49
1450
+ 36
1451
+ 1
1452
+ 56
1453
+ 71
1454
+ 50
1455
+ 26
1456
+ 1
1457
+ 19
1458
+ 2
1459
+ 15
1460
+ 20
1461
+ 1
1462
+ 7
1463
+ 72
1464
+ 49
1465
+ 36
1466
+ 1
1467
+ 9
1468
+ 570
1469
+ 5
1470
+ 48
1471
+ 73
1472
+ 9
1473
+ 433
1474
+ 5
1475
+ 78
1476
+ 47
1477
+ 49
1478
+ 74
1479
+ 1
1480
+ 8
1481
+ 434
1482
+ 1
1483
+ 15
1484
+ 45
1485
+ 75
1486
+ 76
1487
+ 49
1488
+ 77
1489
+ 0
1490
+ 15
1491
+ 5
1492
+ 48
1493
+ 73
1494
+ 9
1495
+ 455
1496
+ 5
1497
+ 78
1498
+ 47
1499
+ 49
1500
+ 74
1501
+ 1
1502
+ 8
1503
+ 456
1504
+ 1
1505
+ 15
1506
+ 45
1507
+ 78
1508
+ 79
1509
+ 7
1510
+ 80
1511
+ 64
1512
+ 49
1513
+ 81
1514
+ 1
1515
+ 15
1516
+ 45
1517
+ 82
1518
+ 83
1519
+ 7
1520
+ 80
1521
+ 64
1522
+ 7
1523
+ 84
1524
+ 64
1525
+ 49
1526
+ 81
1527
+ 2
1528
+ 15
1529
+ 45
1530
+ 18
1531
+ 85
1532
+ 7
1533
+ 80
1534
+ 64
1535
+ 7
1536
+ 84
1537
+ 64
1538
+ 49
1539
+ 81
1540
+ 2
1541
+ 15
1542
+ 26
1543
+ 93
1544
+ 0
1545
+ 15
1546
+ 29
1547
+ 521
1548
+ 0
1549
+ 45
1550
+ 86
1551
+ 87
1552
+ 20
1553
+ 1
1554
+ 7
1555
+ 88
1556
+ 49
1557
+ 36
1558
+ 1
1559
+ 7
1560
+ 84
1561
+ 64
1562
+ 56
1563
+ 89
1564
+ 50
1565
+ 90
1566
+ 2
1567
+ 30
1568
+ 8
1569
+ 565
1570
+ 26
1571
+ 93
1572
+ 1
1573
+ 15
1574
+ 24
1575
+ 13
1576
+ 45
1577
+ 91
1578
+ 92
1579
+ 12
1580
+ 49
1581
+ 93
1582
+ 1
1583
+ 10
1584
+ 538
1585
+ 8
1586
+ 560
1587
+ 15
1588
+ 24
1589
+ 19
1590
+ 3
1591
+ 15
1592
+ 45
1593
+ 7
1594
+ 94
1595
+ 49
1596
+ 39
1597
+ 0
1598
+ 20
1599
+ 3
1600
+ 49
1601
+ 95
1602
+ 0
1603
+ 49
1604
+ 96
1605
+ 1
1606
+ 25
1607
+ 8
1608
+ 565
1609
+ 15
1610
+ 92
1611
+ 1
1612
+ 27
1613
+ 34
1614
+ 92
1615
+ 0
1616
+ 27
1617
+ 8
1618
+ 571
1619
+ 1
1620
+ 15
1621
+ 45
1622
+ 97
1623
+ 98
1624
+ 56
1625
+ 99
1626
+ 50
1627
+ 100
1628
+ 0
1629
+ 11
1630
+ I
1631
+ a
1632
+ I
1633
+ 4
1634
+ I
1635
+ 0
1636
+ I
1637
+ 0
1638
+ I
1639
+ 0
1640
+ n
1641
+ p
1642
+ 101
1643
+ x
1644
+ 4
1645
+ ARGV
1646
+ n
1647
+ s
1648
+ 2
1649
+ -v
1650
+ x
1651
+ 2
1652
+ ==
1653
+ n
1654
+ s
1655
+ 9
1656
+ --version
1657
+ s
1658
+ 31
1659
+ Redis server version %s (Ruby)
1660
+
1661
+ x
1662
+ 5
1663
+ Redis
1664
+ n
1665
+ x
1666
+ 7
1667
+ VERSION
1668
+ x
1669
+ 1
1670
+ %
1671
+ x
1672
+ 5
1673
+ print
1674
+ x
1675
+ 4
1676
+ exit
1677
+ n
1678
+ s
1679
+ 6
1680
+ --help
1681
+ n
1682
+ x
1683
+ 4
1684
+ size
1685
+ x
1686
+ 1
1687
+ >
1688
+ x
1689
+ 6
1690
+ STDERR
1691
+ n
1692
+ s
1693
+ 40
1694
+ Usage: ruby-redis [/path/to/redis.conf]
1695
+
1696
+ n
1697
+ s
1698
+ 45
1699
+ ruby-redis - (read config from stdin)
1700
+
1701
+ n
1702
+ x
1703
+ 6
1704
+ Config
1705
+ n
1706
+ x
1707
+ 3
1708
+ new
1709
+ x
1710
+ 8
1711
+ allocate
1712
+ n
1713
+ x
1714
+ 6
1715
+ empty?
1716
+ x
1717
+ 4
1718
+ ARGF
1719
+ n
1720
+ x
1721
+ 10
1722
+ initialize
1723
+ n
1724
+ n
1725
+ x
1726
+ 8
1727
+ loglevel
1728
+ x
1729
+ 2
1730
+ []
1731
+ s
1732
+ 5
1733
+ debug
1734
+ n
1735
+ x
1736
+ 6
1737
+ logger
1738
+ x
1739
+ 6
1740
+ Logger
1741
+ n
1742
+ x
1743
+ 5
1744
+ DEBUG
1745
+ x
1746
+ 6
1747
+ level=
1748
+ s
1749
+ 6
1750
+ notice
1751
+ n
1752
+ n
1753
+ x
1754
+ 6
1755
+ NOTICE
1756
+ s
1757
+ 7
1758
+ warning
1759
+ n
1760
+ n
1761
+ x
1762
+ 7
1763
+ WARNING
1764
+ s
1765
+ 7
1766
+ verbose
1767
+ s
1768
+ 66
1769
+ Invalid log level. Must be one of debug, notice, warning, verbose.
1770
+ x
1771
+ 5
1772
+ raise
1773
+ n
1774
+ n
1775
+ x
1776
+ 4
1777
+ INFO
1778
+ x
1779
+ 3
1780
+ Dir
1781
+ n
1782
+ x
1783
+ 3
1784
+ dir
1785
+ x
1786
+ 5
1787
+ chdir
1788
+ x
1789
+ 7
1790
+ logfile
1791
+ s
1792
+ 6
1793
+ stdout
1794
+ n
1795
+ n
1796
+ s
1797
+ 131
1798
+ Warning: no config file specified, using the default config. In order to specify a config file use 'ruby-redis /path/to/redis.conf'
1799
+ x
1800
+ 4
1801
+ warn
1802
+ x
1803
+ 5
1804
+ Array
1805
+ n
1806
+ x
1807
+ 9
1808
+ databases
1809
+ M
565
1810
  1
566
- 15
567
- 20
568
- 0
1811
+ p
1812
+ 2
1813
+ x
569
1814
  9
570
- 240
1815
+ for_block
1816
+ t
1817
+ n
1818
+ x
1819
+ 6
1820
+ server
1821
+ i
1822
+ 25
571
1823
  45
572
- 7
573
- 44
574
- 49
575
- 43
576
1824
  0
577
- 7
578
- 45
579
- 64
580
- 49
581
- 46
582
- 1
583
- 8
584
- 241
585
1825
  1
586
- 15
587
- 45
1826
+ 13
1827
+ 71
1828
+ 2
1829
+ 47
1830
+ 9
1831
+ 21
588
1832
  47
589
- 48
590
1833
  49
1834
+ 3
1835
+ 0
1836
+ 13
1837
+ 47
591
1838
  49
1839
+ 4
592
1840
  0
593
1841
  15
594
- 45
595
- 47
596
- 50
597
- 56
598
- 51
599
- 50
600
- 52
1842
+ 8
1843
+ 24
1844
+ 49
1845
+ 2
601
1846
  0
602
1847
  11
603
1848
  I
604
- 5
1849
+ 3
605
1850
  I
606
- 2
1851
+ 0
607
1852
  I
608
1853
  0
609
1854
  I
610
1855
  0
611
- n
1856
+ I
1857
+ 0
1858
+ I
1859
+ -2
612
1860
  p
613
- 53
1861
+ 5
614
1862
  x
615
- 4
616
- ARGV
1863
+ 8
1864
+ Database
617
1865
  n
618
- s
619
- 2
620
- -v
621
1866
  x
622
- 2
623
- ==
624
- n
625
- s
1867
+ 3
1868
+ new
1869
+ x
1870
+ 8
1871
+ allocate
1872
+ x
1873
+ 10
1874
+ initialize
1875
+ p
1876
+ 3
1877
+ I
1878
+ 0
1879
+ I
1880
+ 51
1881
+ I
1882
+ 19
1883
+ x
1884
+ 49
1885
+ /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
1886
+ p
1887
+ 0
1888
+ x
626
1889
  9
627
- --version
628
- s
629
- 31
630
- Redis server version %s (Ruby)
631
-
1890
+ daemonize
1891
+ x
1892
+ 4
1893
+ fork
632
1894
  x
633
1895
  5
634
- Redis
635
- n
1896
+ exit!
636
1897
  x
637
1898
  7
638
- VERSION
1899
+ Process
1900
+ n
639
1901
  x
640
- 1
641
- %
1902
+ 6
1903
+ setsid
642
1904
  x
643
1905
  5
644
- print
645
- x
646
- 4
647
- exit
1906
+ STDIN
648
1907
  n
649
1908
  s
650
- 6
651
- --help
652
- n
653
- x
654
- 4
655
- size
1909
+ 9
1910
+ /dev/null
656
1911
  x
657
- 1
658
- >
1912
+ 6
1913
+ reopen
659
1914
  x
660
1915
  6
661
- STDERR
662
- n
663
- s
664
- 40
665
- Usage: ruby-redis [/path/to/redis.conf]
666
-
1916
+ STDOUT
667
1917
  n
668
1918
  s
669
- 45
670
- ruby-redis - (read config from stdin)
671
-
1919
+ 1
1920
+ w
672
1921
  n
673
1922
  x
674
- 6
675
- Config
1923
+ 4
1924
+ File
676
1925
  n
677
1926
  x
678
- 3
679
- new
1927
+ 7
1928
+ pidfile
1929
+ M
1930
+ 1
1931
+ p
1932
+ 2
680
1933
  x
681
- 8
682
- allocate
1934
+ 9
1935
+ for_block
1936
+ t
683
1937
  n
684
1938
  x
685
1939
  6
686
- empty?
687
- x
1940
+ server
1941
+ i
1942
+ 22
1943
+ 57
1944
+ 19
1945
+ 0
1946
+ 15
1947
+ 20
1948
+ 0
1949
+ 7
1950
+ 0
1951
+ 64
1952
+ 45
1953
+ 1
1954
+ 2
1955
+ 49
1956
+ 3
1957
+ 0
1958
+ 49
688
1959
  4
689
- ARGF
1960
+ 1
1961
+ 49
1962
+ 5
1963
+ 1
1964
+ 11
1965
+ I
1966
+ 5
1967
+ I
1968
+ 1
1969
+ I
1970
+ 1
1971
+ I
1972
+ 0
1973
+ I
1974
+ 1
690
1975
  n
1976
+ p
1977
+ 6
1978
+ s
1979
+ 3
1980
+ %d
1981
+
691
1982
  x
692
- 10
693
- initialize
694
- n
1983
+ 7
1984
+ Process
695
1985
  n
696
1986
  x
697
1987
  3
698
- Dir
699
- n
1988
+ pid
700
1989
  x
701
- 3
702
- dir
1990
+ 1
1991
+ %
1992
+ x
1993
+ 5
1994
+ write
1995
+ p
1996
+ 5
1997
+ I
1998
+ 0
1999
+ I
2000
+ 5e
2001
+ I
2002
+ 4
2003
+ I
2004
+ 5f
2005
+ I
2006
+ 16
2007
+ x
2008
+ 49
2009
+ /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
2010
+ p
2011
+ 1
703
2012
  x
704
2013
  2
705
- []
2014
+ io
706
2015
  x
707
- 5
708
- chdir
2016
+ 4
2017
+ open
709
2018
  x
710
- 7
711
- logfile
712
- s
713
- 6
714
- stdout
2019
+ 9
2020
+ Exception
715
2021
  n
716
2022
  x
717
- 6
718
- logger
2023
+ 3
2024
+ ===
719
2025
  n
720
- s
721
- 131
722
- Warning: no config file specified, using the default config. In order to specify a config file use 'ruby-redis /path/to/redis.conf'
723
2026
  x
724
- 4
725
- warn
2027
+ 7
2028
+ message
2029
+ x
2030
+ 5
2031
+ error
726
2032
  x
727
2033
  12
728
2034
  EventMachine
729
2035
  n
730
- x
731
- 5
732
- epoll
733
- n
734
2036
  M
735
2037
  1
736
2038
  p
@@ -744,341 +2046,234 @@ x
744
2046
  6
745
2047
  server
746
2048
  i
747
- 128
748
- 44
2049
+ 163
2050
+ 7
2051
+ 0
2052
+ 64
2053
+ 45
2054
+ 1
2055
+ 2
749
2056
  43
2057
+ 3
2058
+ 49
2059
+ 4
2060
+ 1
2061
+ 19
750
2062
  0
751
- 78
2063
+ 15
752
2064
  21
753
2065
  1
754
2066
  1
755
2067
  7
756
- 1
2068
+ 5
757
2069
  49
758
- 2
2070
+ 6
759
2071
  1
760
- 2
761
- 49
762
- 3
763
- 3
764
- 56
765
- 4
766
- 50
767
- 5
768
- 0
769
- 15
2072
+ 9
2073
+ 85
770
2074
  45
771
- 6
772
- 7
773
2075
  7
774
2076
  8
775
- 64
776
2077
  21
777
2078
  1
778
2079
  1
779
2080
  7
780
- 9
2081
+ 5
781
2082
  49
782
- 2
2083
+ 6
783
2084
  1
784
2085
  45
2086
+ 9
785
2087
  10
786
- 11
787
2088
  21
788
2089
  1
789
- 1
790
- 7
791
- 12
792
- 49
793
2090
  2
794
- 1
795
- 49
796
- 13
797
- 4
798
- 15
799
2091
  21
800
2092
  1
801
2093
  1
802
- 7
803
- 14
804
- 49
805
- 2
806
- 1
807
- 9
808
- 71
809
- 5
810
- 7
811
- 15
812
- 64
813
- 47
814
2094
  49
815
- 16
816
- 1
817
- 8
818
- 72
819
- 1
2095
+ 11
2096
+ 4
820
2097
  15
821
2098
  45
822
- 17
823
- 18
2099
+ 1
2100
+ 12
824
2101
  49
825
- 19
2102
+ 13
826
2103
  0
827
- 7
828
2104
  20
829
- 64
830
- 45
831
- 17
832
- 21
833
- 43
834
- 22
835
- 49
836
- 23
837
- 1
2105
+ 0
838
2106
  49
839
- 24
2107
+ 14
840
2108
  1
841
2109
  15
842
2110
  45
843
- 17
844
- 25
2111
+ 1
2112
+ 15
845
2113
  49
846
- 19
2114
+ 13
847
2115
  0
848
2116
  7
849
- 26
2117
+ 16
850
2118
  64
851
2119
  21
852
2120
  1
853
2121
  1
854
2122
  7
855
- 9
2123
+ 5
856
2124
  49
857
- 2
2125
+ 6
858
2126
  1
859
2127
  49
860
- 23
2128
+ 4
861
2129
  1
862
2130
  49
863
- 24
2131
+ 14
864
2132
  1
865
- 15
2133
+ 8
2134
+ 152
866
2135
  45
2136
+ 7
867
2137
  17
868
- 27
2138
+ 21
2139
+ 1
2140
+ 1
2141
+ 7
2142
+ 18
869
2143
  49
2144
+ 6
2145
+ 1
2146
+ 21
2147
+ 1
2148
+ 1
2149
+ 7
870
2150
  19
871
- 0
872
2151
  49
873
- 28
874
- 0
875
- 11
876
- I
877
- 7
878
- I
879
- 0
880
- I
881
- 0
882
- I
883
- 0
884
- I
885
- -2
886
- p
887
- 29
888
- x
889
- 5
890
- Range
891
- x
2152
+ 6
2153
+ 1
2154
+ 45
892
2155
  9
893
- databases
894
- x
895
- 2
896
- []
897
- x
898
- 3
899
- new
900
- M
2156
+ 20
2157
+ 21
901
2158
  1
902
- p
903
2159
  2
904
- x
905
- 9
906
- for_block
907
- t
908
- n
909
- x
910
- 6
911
- server
912
- i
913
- 59
914
- 57
915
- 19
916
- 0
2160
+ 21
2161
+ 1
2162
+ 1
2163
+ 49
2164
+ 11
2165
+ 5
917
2166
  15
918
2167
  45
919
- 0
920
2168
  1
2169
+ 21
921
2170
  49
922
- 2
2171
+ 13
923
2172
  0
924
2173
  20
925
2174
  0
926
- 14
927
- 2
928
2175
  49
929
- 3
2176
+ 14
930
2177
  1
931
- 13
932
- 10
933
- 54
934
2178
  15
935
2179
  45
936
- 4
937
- 5
2180
+ 1
2181
+ 22
2182
+ 49
938
2183
  13
939
- 71
2184
+ 0
2185
+ 7
2186
+ 23
2187
+ 64
2188
+ 21
2189
+ 1
2190
+ 1
2191
+ 7
2192
+ 19
2193
+ 49
940
2194
  6
941
- 47
942
- 9
943
- 42
944
- 47
2195
+ 1
945
2196
  49
946
- 7
947
- 0
948
- 13
949
- 47
2197
+ 4
2198
+ 1
950
2199
  49
951
- 8
952
- 0
2200
+ 14
2201
+ 1
953
2202
  15
954
- 8
955
2203
  45
2204
+ 1
2205
+ 24
956
2206
  49
957
- 6
958
- 0
959
2207
  13
960
- 18
961
- 3
2208
+ 0
962
2209
  49
963
- 9
964
- 2
965
- 15
966
- 8
967
- 58
968
- 18
969
- 2
970
- 16
971
- 2
2210
+ 25
2211
+ 0
972
2212
  11
973
2213
  I
974
- 6
975
- I
976
- 1
977
- I
978
- 1
979
- I
980
- 1
981
- n
982
- p
983
- 10
984
- x
985
- 5
986
- Redis
987
- n
988
- x
989
- 9
990
- databases
991
- x
992
- 2
993
- []
994
- x
995
- 8
996
- Database
997
- n
998
- x
999
- 3
1000
- new
1001
- x
1002
2214
  8
1003
- allocate
1004
- x
1005
- 10
1006
- initialize
1007
- x
1008
- 3
1009
- []=
1010
- p
1011
- 5
1012
2215
  I
1013
- 0
2216
+ 1
1014
2217
  I
1015
- 32
2218
+ 0
1016
2219
  I
1017
- 4
2220
+ 0
1018
2221
  I
1019
- 33
2222
+ 0
1020
2223
  I
1021
- 3b
1022
- x
1023
- 49
1024
- /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
2224
+ -2
1025
2225
  p
2226
+ 26
2227
+ s
2228
+ 37
2229
+ Server started, Ruby Redis version %s
2230
+ x
2231
+ 5
2232
+ Redis
2233
+ n
2234
+ x
2235
+ 7
2236
+ VERSION
2237
+ x
1026
2238
  1
2239
+ %
1027
2240
  x
1028
- 8
1029
- db_index
2241
+ 10
2242
+ unixsocket
1030
2243
  x
1031
- 4
1032
- each
2244
+ 2
2245
+ []
1033
2246
  x
1034
2247
  12
1035
2248
  EventMachine
1036
2249
  n
1037
- s
1038
- 9
1039
- 127.0.0.1
1040
- x
1041
- 4
1042
- port
1043
2250
  x
1044
- 16
1045
- StrictConnection
2251
+ 15
2252
+ RubyRedisServer
1046
2253
  n
1047
2254
  x
1048
- 11
1049
- requirepass
1050
- x
1051
2255
  12
1052
2256
  start_server
1053
- x
1054
- 9
1055
- daemonize
1056
- s
1057
- 4
1058
- todo
1059
- x
1060
- 5
1061
- raise
1062
- x
1063
- 5
1064
- Redis
1065
2257
  n
1066
2258
  x
1067
2259
  6
1068
2260
  logger
2261
+ x
2262
+ 6
2263
+ notice
2264
+ n
1069
2265
  s
1070
- 37
1071
- Server started, Ruby Redis version %s
2266
+ 51
2267
+ The server is now ready to accept connections at %s
1072
2268
  n
1073
2269
  x
1074
- 7
1075
- VERSION
1076
- x
1077
- 1
1078
- %
2270
+ 4
2271
+ bind
1079
2272
  x
1080
- 6
1081
- notice
2273
+ 4
2274
+ port
2275
+ n
2276
+ n
1082
2277
  n
1083
2278
  s
1084
2279
  56
@@ -1088,75 +2283,82 @@ x
1088
2283
  5
1089
2284
  flush
1090
2285
  p
1091
- 19
2286
+ 21
1092
2287
  I
1093
2288
  0
1094
2289
  I
1095
- 32
2290
+ 68
1096
2291
  I
1097
- 16
2292
+ e
1098
2293
  I
1099
- 37
2294
+ 6a
1100
2295
  I
1101
- 33
2296
+ 18
1102
2297
  I
1103
- 39
2298
+ 6b
1104
2299
  I
1105
- 3d
2300
+ 30
1106
2301
  I
1107
- 3a
2302
+ 6c
1108
2303
  I
1109
- 47
2304
+ 3c
1110
2305
  I
1111
- 39
2306
+ 6d
1112
2307
  I
1113
- 48
2308
+ 55
1114
2309
  I
1115
- 0
2310
+ 6f
1116
2311
  I
1117
- 49
2312
+ 75
1118
2313
  I
1119
- 40
2314
+ 70
1120
2315
  I
1121
- 5e
2316
+ 81
1122
2317
  I
1123
- 41
2318
+ 71
1124
2319
  I
1125
- 76
2320
+ 98
1126
2321
  I
1127
- 44
2322
+ 0
1128
2323
  I
1129
- 80
2324
+ 99
2325
+ I
2326
+ 75
2327
+ I
2328
+ a3
1130
2329
  x
1131
2330
  49
1132
2331
  /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
1133
2332
  p
1134
- 0
2333
+ 1
2334
+ x
2335
+ 15
2336
+ started_message
1135
2337
  x
1136
2338
  3
1137
2339
  run
1138
2340
  p
1139
- 55
2341
+ 111
1140
2342
  I
1141
2343
  -1
1142
2344
  I
1143
- d
2345
+ 2c
1144
2346
  I
1145
2347
  0
1146
2348
  I
1147
- f
2349
+ 2e
1148
2350
  I
1149
2351
  1a
1150
2352
  I
1151
- 10
2353
+ 2f
1152
2354
  I
1153
2355
  2b
1154
2356
  I
1155
- 11
2357
+ 30
1156
2358
  I
1157
2359
  33
1158
2360
  I
1159
- f
2361
+ 2e
1160
2362
  I
1161
2363
  34
1162
2364
  I
@@ -1164,23 +2366,23 @@ I
1164
2366
  I
1165
2367
  35
1166
2368
  I
1167
- 14
2369
+ 33
1168
2370
  I
1169
2371
  4e
1170
2372
  I
1171
- 15
2373
+ 34
1172
2374
  I
1173
2375
  58
1174
2376
  I
1175
- 16
2377
+ 35
1176
2378
  I
1177
2379
  62
1178
2380
  I
1179
- 17
2381
+ 36
1180
2382
  I
1181
2383
  6a
1182
2384
  I
1183
- 14
2385
+ 33
1184
2386
  I
1185
2387
  6b
1186
2388
  I
@@ -1188,11 +2390,11 @@ I
1188
2390
  I
1189
2391
  6c
1190
2392
  I
1191
- 1a
2393
+ 39
1192
2394
  I
1193
2395
  78
1194
2396
  I
1195
- 1c
2397
+ 3b
1196
2398
  I
1197
2399
  95
1198
2400
  I
@@ -1200,7 +2402,7 @@ I
1200
2402
  I
1201
2403
  9c
1202
2404
  I
1203
- 1c
2405
+ 3b
1204
2406
  I
1205
2407
  ab
1206
2408
  I
@@ -1208,56 +2410,174 @@ I
1208
2410
  I
1209
2411
  ae
1210
2412
  I
1211
- 1c
2413
+ 3b
1212
2414
  I
1213
2415
  b1
1214
2416
  I
1215
- 1e
2417
+ 3d
1216
2418
  I
1217
2419
  bf
1218
2420
  I
1219
- 20
2421
+ 3e
2422
+ I
2423
+ d3
2424
+ I
2425
+ 3f
2426
+ I
2427
+ e1
2428
+ I
2429
+ 40
2430
+ I
2431
+ f5
2432
+ I
2433
+ 41
2434
+ I
2435
+ 103
2436
+ I
2437
+ 42
2438
+ I
2439
+ 117
2440
+ I
2441
+ 43
2442
+ I
2443
+ 12b
2444
+ I
2445
+ 44
1220
2446
  I
1221
- dd
2447
+ 135
2448
+ I
2449
+ 46
2450
+ I
2451
+ 147
1222
2452
  I
1223
2453
  0
1224
2454
  I
1225
- de
2455
+ 148
1226
2456
  I
1227
- 2b
2457
+ 49
2458
+ I
2459
+ 156
1228
2460
  I
1229
- e2
2461
+ 4b
1230
2462
  I
1231
- 2c
2463
+ 174
2464
+ I
2465
+ 0
1232
2466
  I
1233
- f0
2467
+ 175
1234
2468
  I
1235
- 2b
2469
+ 4d
2470
+ I
2471
+ 179
2472
+ I
2473
+ 4e
2474
+ I
2475
+ 187
1236
2476
  I
1237
- f1
2477
+ 4d
2478
+ I
2479
+ 188
1238
2480
  I
1239
2481
  0
1240
2482
  I
1241
- f2
2483
+ 189
1242
2484
  I
1243
- 2f
2485
+ 51
1244
2486
  I
1245
- f9
2487
+ 19b
1246
2488
  I
1247
- 30
2489
+ 56
2490
+ I
2491
+ 1a4
2492
+ I
2493
+ 57
2494
+ I
2495
+ 1b2
2496
+ I
2497
+ 0
2498
+ I
2499
+ 1b3
2500
+ I
2501
+ 58
2502
+ I
2503
+ 1ba
2504
+ I
2505
+ 59
2506
+ I
2507
+ 1c8
2508
+ I
2509
+ 0
2510
+ I
2511
+ 1c9
2512
+ I
2513
+ 5a
2514
+ I
2515
+ 1d3
2516
+ I
2517
+ 5b
2518
+ I
2519
+ 1e0
2520
+ I
2521
+ 5c
2522
+ I
2523
+ 1ed
2524
+ I
2525
+ 5e
2526
+ I
2527
+ 209
2528
+ I
2529
+ 0
2530
+ I
2531
+ 20e
2532
+ I
2533
+ 61
2534
+ I
2535
+ 21b
2536
+ I
2537
+ 63
2538
+ I
2539
+ 21c
2540
+ I
2541
+ 61
2542
+ I
2543
+ 21f
2544
+ I
2545
+ 62
2546
+ I
2547
+ 235
2548
+ I
2549
+ 0
2550
+ I
2551
+ 23a
2552
+ I
2553
+ 56
2554
+ I
2555
+ 23b
1248
2556
  I
1249
- 102
2557
+ 0
2558
+ I
2559
+ 23c
2560
+ I
2561
+ 66
2562
+ I
2563
+ 245
1250
2564
  x
1251
2565
  49
1252
2566
  /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
1253
2567
  p
1254
- 2
2568
+ 4
1255
2569
  x
1256
2570
  22
1257
2571
  show_no_config_warning
1258
2572
  x
1259
2573
  6
1260
2574
  config
2575
+ x
2576
+ 9
2577
+ databases
2578
+ x
2579
+ 1
2580
+ e
1261
2581
  p
1262
2582
  5
1263
2583
  I
@@ -1265,11 +2585,11 @@ I
1265
2585
  I
1266
2586
  9
1267
2587
  I
1268
- 1f
2588
+ 21
1269
2589
  I
1270
- d
2590
+ 2c
1271
2591
  I
1272
- 2a
2592
+ 2c
1273
2593
  x
1274
2594
  49
1275
2595
  /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb
@@ -1295,29 +2615,25 @@ x
1295
2615
  13
1296
2616
  attach_method
1297
2617
  p
1298
- 11
2618
+ 9
1299
2619
  I
1300
2620
  0
1301
2621
  I
1302
2622
  1
1303
2623
  I
1304
- 19
2624
+ 1b
1305
2625
  I
1306
2626
  2
1307
2627
  I
1308
- 22
1309
- I
1310
- 3
1311
- I
1312
- 2b
2628
+ 35
1313
2629
  I
1314
- 4
2630
+ 1
1315
2631
  I
1316
- 34
2632
+ 3b
1317
2633
  I
1318
2634
  6
1319
2635
  I
1320
- 51
2636
+ 58
1321
2637
  x
1322
2638
  49
1323
2639
  /Users/dturnbull/ruby/ruby-redis/lib/redis/bin.rb