redis-dump 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,9 @@
1
1
  REDIS-DUMP, CHANGES
2
2
 
3
+ #### 0.1.2 (2010-11-15) ###############################
4
+
5
+ * ADDED: redis-report
6
+
3
7
  #### 0.1.1 (2010-11-15) ###############################
4
8
 
5
9
  * ADDED: redis-load and redis-dump executables
@@ -4,6 +4,8 @@
4
4
 
5
5
  <b>NOTE: This is alpha software. DO NOT RELY ON IT FOR PRECIOUS THINGS!!</b>
6
6
 
7
+ <b>ALSO: This is an unofficial tool.</b>
8
+
7
9
 
8
10
  == Usage
9
11
 
@@ -31,12 +33,12 @@ Here are examples of each datatype:
31
33
  {"db":0,"key":"hashkey","ttl":-1,"type":"hash","value":{"field_a":"value_a","field_b":"value_b","field_c":"value_c"},"size":42}
32
34
  {"db":0,"key":"listkey","ttl":-1,"type":"list","value":["value_0","value_1","value_2","value_0","value_1","value_2"],"size":42}
33
35
  {"db":0,"key":"setkey","ttl":-1,"type":"set","value":["value_2","value_0","value_1","value_3"],"size":28}
34
- {"db":0,"key":"zsetkey","ttl":-1,"type":"zset","value":[["value_0","100"],["value_1","100"],["value_2","200"],["value_3","300"],["value_4","400"]],"size":50}
36
+ {"db":0,"key":"zsetkey","ttl":-1,"type":"zset","value":[["value_0","100"],["value_1","100"],["value_2","200"],["value_3","300"],["value_4","400"]],"size":50}
35
37
  {"db":0,"key":"stringkey","ttl":79,"type":"string","value":"stringvalue","size":11}
36
38
 
37
39
  === Important note about TTLs
38
40
 
39
- One of the purposes of redis-dump is the ability to restore the database to a known state. When you restore a redis database from a redis-dump file, <em>expires are reset to their values at the time the dump was created</em>. This is different from restoring from Redis' native .rdb or .aof files (expires are stored relative to the actual time they were set).
41
+ One of the purposes of redis-dump is the ability to restore the database to a known state. When you restore a redis database from a redis-dump file, <em>the expires are reset to their values at the time the dump was created</em>. This is different from restoring from Redis' native .rdb or .aof files (expires are stored relative to the actual time they were set).
40
42
 
41
43
 
42
44
  == Installation
@@ -49,6 +51,7 @@ One of:
49
51
  == More Info
50
52
 
51
53
  * Codes[http://github.com/delano/redis-dump]
54
+ * Docs[http://goldensword.ca/redis-dump/]
52
55
 
53
56
 
54
57
  == Credits
@@ -1,5 +1,5 @@
1
1
  ---
2
2
  :MAJOR: 0
3
3
  :MINOR: 1
4
- :PATCH: 1
4
+ :PATCH: 2
5
5
  :BUILD: '001'
@@ -37,7 +37,7 @@ class Redis::Dump::CLI
37
37
  global :nosafe do
38
38
  Redis::Dump.safe = false
39
39
  end
40
-
40
+
41
41
  before do |obj|
42
42
  obj.global.uri ||= 'redis://%s:%s' % [Redis::Dump.host, Redis::Dump.port]
43
43
  obj.global.uri = 'redis://' << obj.global.uri unless obj.global.uri.match(/^redis:\/\//)
@@ -0,0 +1,86 @@
1
+ #!/usr/bin/ruby
2
+
3
+ # = Redis-Dump
4
+ #
5
+ #
6
+ # Usage:
7
+ #
8
+ # $ redis-report -h
9
+ # $ redis-report
10
+ # $ redis-report -d 15
11
+ #
12
+ #--
13
+
14
+ RD_HOME = File.expand_path File.join(File.dirname(__FILE__), '..')
15
+ lib_dir = File.join(RD_HOME, 'lib')
16
+ $:.unshift lib_dir
17
+
18
+ require 'redis/dump'
19
+ require 'drydock'
20
+
21
+ # Command-line interface for bin/redis-dump
22
+ class Redis::Dump::CLI
23
+ extend Drydock
24
+
25
+ default :report
26
+ trawler :report
27
+
28
+ global :u, :uri, String, "Redis URI (e.g. redis://hostname[:port])"
29
+ global :d, :database, Integer, "Redis database (e.g. -d 15)"
30
+ global :v, :verbose, "Increase output" do
31
+ @verbose ||= 0
32
+ @verbose += 1
33
+ end
34
+ global :V, :version, "Display version" do
35
+ puts "Version: #{Redis::Dump::VERSION.to_s}"
36
+ exit 0
37
+ end
38
+ global :D, :debug do
39
+ Redis::Dump.debug = true
40
+ end
41
+ global :nosafe do
42
+ Redis::Dump.safe = false
43
+ end
44
+
45
+ before do |obj|
46
+ obj.global.uri ||= 'redis://%s:%s' % [Redis::Dump.host, Redis::Dump.port]
47
+ obj.global.uri = 'redis://' << obj.global.uri unless obj.global.uri.match(/^redis:\/\//)
48
+ obj.global.database &&= obj.global.database.to_i
49
+ obj.global.database ||= (0..15)
50
+ Redis::Dump.ld " redis_uri: #{obj.global.uri} (#{obj.global.database})"
51
+ end
52
+
53
+ usage "<dumpfile_full.json redis-load"
54
+ usage "<dumpfile_db15.json redis-load -d 15"
55
+ command :report do |obj|
56
+ rd = Redis::Dump.new obj.global.database, obj.global.uri
57
+ total_size, dbs = 0, {}
58
+ rd.report do |record|
59
+ puts record if obj.global.verbose >= 1
60
+ dbs[record['db']] ||= 0
61
+ dbs[record['db']] += record['size']
62
+ total_size += record['size']
63
+ end
64
+ puts dbs.keys.sort.collect { |db| " db#{db}: #{dbs[db].to_bytes}" }
65
+ puts "total: #{total_size.to_bytes}"
66
+ end
67
+
68
+ end
69
+
70
+
71
+ begin
72
+ Drydock.run!(ARGV, STDIN) if Drydock.run? && !Drydock.has_run?
73
+ rescue Drydock::ArgError, Drydock::OptError => ex
74
+ STDERR.puts ex.message
75
+ STDERR.puts ex.usage
76
+ rescue Drydock::InvalidArgument => ex
77
+ STDERR.puts ex.message
78
+ rescue Drydock::UnknownCommand => ex
79
+ STDERR.puts "Unknown command: %s" % ex.name
80
+ rescue Interrupt
81
+ puts $/, "Exiting... "
82
+ exit 1
83
+ rescue => ex
84
+ STDERR.puts "ERROR (#{ex.class.to_s}): #{ex.message}"
85
+ STDERR.puts ex.backtrace if Redis::Dump.debug
86
+ end
@@ -147,20 +147,18 @@ class Redis
147
147
  this_redis.set key, str
148
148
  end
149
149
 
150
- def value_string(this_redis, key) this_redis.get key end
151
- def value_list (this_redis, key) this_redis.lrange key, 0, -1 end
152
- def value_set (this_redis, key) this_redis.smembers key end
153
- def value_zset (this_redis, key)
154
- zset = this_redis.zrange(key, 0, -1, :with_scores => true).tuple
155
- end
156
- def value_hash (this_redis, key) this_redis.hgetall(key) end
157
- def value_none (this_redis, key) '' end
158
- def stringify_string(this_redis, key, v=nil) (v || value_string(this_redis, key)) end
159
- def stringify_list (this_redis, key, v=nil) (v || value_list(this_redis, key)).join end
160
- def stringify_set (this_redis, key, v=nil) (v || value_set(this_redis, key)).join end
161
- def stringify_zset (this_redis, key, v=nil) (v || value_zset(this_redis, key)).flatten.compact.join end
150
+ def value_string(this_redis, key) this_redis.get key end
151
+ def value_list (this_redis, key) this_redis.lrange key, 0, -1 end
152
+ def value_set (this_redis, key) this_redis.smembers key end
153
+ def value_zset (this_redis, key) this_redis.zrange(key, 0, -1, :with_scores => true).tuple end
154
+ def value_hash (this_redis, key) this_redis.hgetall(key) end
155
+ def value_none (this_redis, key) '' end
156
+ def stringify_string(this_redis, key, v=nil) (v || value_string(this_redis, key)) end
157
+ def stringify_list (this_redis, key, v=nil) (v || value_list(this_redis, key)).join end
158
+ def stringify_set (this_redis, key, v=nil) (v || value_set(this_redis, key)).join end
159
+ def stringify_zset (this_redis, key, v=nil) (v || value_zset(this_redis, key)).flatten.compact.join end
162
160
  def stringify_hash (this_redis, key, v=nil) (v || value_hash(this_redis, key)).to_a.flatten.compact.join end
163
- def stringify_none (this_redis, key, v=nil) (v || '') end
161
+ def stringify_none (this_redis, key, v=nil) (v || '') end
164
162
  end
165
163
  extend Redis::Dump::ClassMethods
166
164
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redis-dump
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 31
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
8
  - 1
9
- - 1
10
- version: 0.1.1
9
+ - 2
10
+ version: 0.1.2
11
11
  platform: ruby
12
12
  authors:
13
13
  - Delano Mandelbaum
@@ -53,6 +53,7 @@ email: delano@solutious.com
53
53
  executables:
54
54
  - redis-dump
55
55
  - redis-load
56
+ - redis-report
56
57
  extensions: []
57
58
 
58
59
  extra_rdoc_files:
@@ -66,6 +67,7 @@ files:
66
67
  - VERSION.yml
67
68
  - bin/redis-dump
68
69
  - bin/redis-load
70
+ - bin/redis-report
69
71
  - lib/redis/dump.rb
70
72
  - try/10_redis_dump_try.rb
71
73
  - try/db0.json