X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/909aee2c6cc6c35394a3dc212126c7f6034b3d63..af0b220756571bc8faf57a0c7b7389dd86a60376:/src/redis-trib.rb?ds=sidebyside diff --git a/src/redis-trib.rb b/src/redis-trib.rb index 8768e544..1b83e19c 100755 --- a/src/redis-trib.rb +++ b/src/redis-trib.rb @@ -319,10 +319,11 @@ class RedisTrib # divisibility. Like we have 3 nodes and need to get 10 slots, we take # 4 from the first, and 3 from the rest. So the biggest is always the first. sources = sources.sort{|a,b| b.slots.length <=> a.slots.length} + source_tot_slots = sources.inject(0) {|sum,source| sum+source.slots.length} sources.each_with_index{|s,i| # Every node will provide a number of slots proportional to the # slots it has assigned. - n = (numslots.to_f/4096*s.slots.length) + n = (numslots.to_f/source_tot_slots*s.slots.length) if i == 0 n = n.ceil else @@ -356,7 +357,7 @@ class RedisTrib keys = source.r.cluster("getkeysinslot",slot,10) break if keys.length == 0 keys.each{|key| - source.r.migrate(target.info[:host],target.info[:port],key,0,1) + source.r.migrate(target.info[:host],target.info[:port],key,0,1000) print "." if o[:verbose] STDOUT.flush }