mirror of
http://github.com/valkey-io/valkey
synced 2024-11-22 00:52:38 +00:00
Deprecate utils/redis-copy.rb in favor of redis-copy gem
This commit is contained in:
parent
5fd6dee0e6
commit
ae8642fb79
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user