Tôi gặp sự cố khi lưu trữ một băm MessagePacked trong Redis. Tôi đã dán một trường hợp thử nghiệm dưới đây. Khi rút ra các dữ liệu đóng gói từ Redis và giải nén nó, băm là hơi bị hỏng. Điều này dường như xảy ra khi các giá trị băm vượt quá một độ dài nhất định, mặc dù tôi không thể nói chắc chắn.Lưu trữ một băm MessagePacked trong Redis
Tôi đang sử dụng Redis 2.4.17 (cấu hình mặc định), Ruby 1.9.3p194, MessagePack 0.4.7 và đá quý Redis 3.0.2. Vấn đề tương tự xảy ra khi sử dụng nút, vì vậy tôi giả định rằng vấn đề nằm trong MessagePack hoặc Redis. Bất kỳ ý tưởng?
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