Ich habe ein Problem beim Speichern eines MessagePacked-Hash in Redis. Ich habe unten einen Testfall eingefügt. Wenn die gepackten Daten aus Redis herausgezogen und entpackt werden, ist der Hash leicht beschädigt. Dies scheint zu passieren, wenn die Hashwerte eine bestimmte Länge überschreiten, obwohl ich das nicht sicher sagen kann.Speichern eines MessagePacked-Hashs in Redis
Ich verwende Redis 2.4.17 (Standardkonfiguration), Ruby 1.9.3p194, MessagePack 0.4.7 und das Redis Juwel 3.0.2. Das selbe Problem tritt bei der Verwendung von Knoten auf, daher nehme ich an, dass das Problem innerhalb von MessagePack oder Redis liegt. Irgendwelche Ideen?
require 'redis'
require 'msgpack'
class Test
def self.run(url)
redis = Redis.new
data = {'number' => 13498935756, 'hash' => {'url' => url}}
redis.set('my_key', MessagePack.pack(data))
result = MessagePack.unpack(redis.get('my_key'))
puts result
puts result['hash']['url'] == data['hash']['url']
end
end
Test.run('http://fake.example.com') # works
=> {"number"=>13498935756, "hash"=>{"url"=>"http://fake.example.com"}}
=> true
Test.run('http://fakeurl.example.com') # does not work
=> {"number"=>13498935756, "hash"=>{"url"=>"ttp://fakeurl.example.com"}}
=> false