Deprecate utils/redis-copy.rb in favor of redis-copy gem

This commit is contained in:
Ryan Biesemeyer 2013-11-06 08:31:57 +00:00
parent 5fd6dee0e6
commit ae8642fb79

View File

@ -3,66 +3,23 @@
# #
# Copy the whole dataset from one Redis instance to another one # Copy the whole dataset from one Redis instance to another one
# #
# WARNING: currently hashes and sorted sets are not supported! This # WARNING: this utility is deprecated and serves as a legacy adapter
# program should be updated. # for the more-robust redis-copy gem.
require 'rubygems' require 'shellwords'
require 'redis'
require 'digest/sha1'
def redisCopy(opts={}) def redisCopy(opts={})
sha1="" src = "#{opts[:srchost]}:#{opts[:srcport]}"
src = Redis.new(:host => opts[:srchost], :port => opts[:srcport]) dst = "#{opts[:dsthost]}:#{opts[:dstport]}"
dst = Redis.new(:host => opts[:dsthost], :port => opts[:dstport]) `redis-copy #{src.shellescape} #{dst.shellescape}`
puts "Loading key names..." rescue Errno::ENOENT
keys = src.keys('*') $stderr.puts 'This utility requires the redis-copy executable',
puts "Copying #{keys.length} keys..." 'from the redis-copy gem on https://rubygems.org',
c = 0 'To install it, run `gem install redis-copy`.'
keys.each{|k| exit 1
vtype = src.type?(k)
ttl = src.ttl(k).to_i if vtype != "none"
if vtype == "string"
dst[k] = src[k]
elsif vtype == "list"
list = src.lrange(k,0,-1)
if list.length == 0
# Empty list special case
dst.lpush(k,"")
dst.lpop(k)
else
list.each{|ele|
dst.rpush(k,ele)
}
end
elsif vtype == "set"
set = src.smembers(k)
if set.length == 0
# Empty set special case
dst.sadd(k,"")
dst.srem(k,"")
else
set.each{|ele|
dst.sadd(k,ele)
}
end
elsif vtype == "none"
puts "WARNING: key '#{k}' was removed in the meanwhile."
end
# Handle keys with an expire time set
if ttl != -1 and vtype != "none"
dst.expire(k,ttl)
end
c = c+1
if (c % 1000) == 0
puts "#{c}/#{keys.length} completed"
end
}
puts "DONE!"
end end
$stderr.puts "This utility is deprecated. Use the redis-copy gem instead."
if ARGV.length != 4 if ARGV.length != 4
puts "Usage: redis-copy.rb <srchost> <srcport> <dsthost> <dstport>" puts "Usage: redis-copy.rb <srchost> <srcport> <dsthost> <dstport>"
exit 1 exit 1