我在 Redis 中存储 MessagePacked 哈希时遇到问题。我在下面粘贴了一个测试用例。从 Redis 中提取打包数据并解包时,哈希值略有损坏。当哈希值超过一定长度时,这似乎会发生,尽管我不能肯定地说。
我正在使用 Redis 2.4.17(默认配置)、Ruby 1.9.3p194、MessagePack 0.4.7 和 Redis gem 3.0.2。使用节点也会出现同样的问题,所以我假设问题出在 MessagePack 或 Redis 中。有任何想法吗?
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