]>
git.saurik.com Git - redis.git/blob - utils/redis-sha1.rb
1 # redis-sha1.rb - Copyright (C) 2009 Salvatore Sanfilippo
2 # BSD license, See the COPYING file for more information.
4 # Performs the SHA1 sum of the whole datset.
5 # This is useful to spot bugs in persistence related code and to make sure
6 # Slaves and Masters are in SYNC.
8 # If you hack this code make sure to sort keys and set elements as this are
9 # unsorted elements. Otherwise the sum may differ with equal dataset.
15 def redisSha1(opts
={})
18 r
.keys('*').sort
.each
{|k
|
22 sha1
= Digest
::SHA1.hexdigest(sha1+k
)
23 sha1
= Digest
::SHA1.hexdigest(sha1+r
.get(k
))
27 sha1
= Digest
::SHA1.hexdigest(sha1+k
)
28 sha1
= Digest
::SHA1.hexdigest(sha1+r
.list_range(k
,0,-1).join("\x01"))
33 sha1
= Digest
::SHA1.hexdigest(sha1+k
)
34 sha1
= Digest
::SHA1.hexdigest(sha1+r
.set_members(k
).to_a
.sort
.join("\x02"))
39 sha1
= Digest
::SHA1.hexdigest(sha1+k
)
40 sha1
= Digest
::SHA1.hexdigest(sha1+r
.zrange(k
,0,-1).join("\x01"))
43 # puts "#{k} => #{sha1}" if len != 0
48 host
= ARGV[0] || "127.0.0.1"
49 port
= ARGV[1] || "6379"
51 puts
"Performing SHA1 of Redis server #{host} #{port} DB: #{db}"
52 p
"Dataset SHA1: #{redisSha1(:host => host, :port => port.to_i, :db => db)}"