]>
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
|
19 sha1
= Digest
::SHA1.hexdigest(sha1+k
)
22 sha1
= Digest
::SHA1.hexdigest(sha1+r
.get(k
))
24 sha1
= Digest
::SHA1.hexdigest(sha1+r
.list_range(k
,0,-1).join("\x01"))
26 sha1
= Digest
::SHA1.hexdigest(sha1+r
.set_members(k
).to_a
.sort
.join("\x02"))
28 sha1
= Digest
::SHA1.hexdigest(sha1+r
.zrange(k
,0,-1).join("\x01"))
34 host
= ARGV[0] || "127.0.0.1"
35 port
= ARGV[1] || "6379"
36 puts
"Performing SHA1 of Redis server #{host} #{port}"
37 p
"Dataset SHA1: #{redisSha1(:host => host, :port => port.to_i)}"