【发布时间】:2011-10-10 15:50:44
【问题描述】:
今天在我们跨多个服务器部署的应用程序中遇到了这个问题。我正在散列一些字符串以存储在共享键/值存储中。 String 的 .hash 方法根据服务器返回不同的整数。任何想法为什么?请注意,我对为什么感兴趣;不可能变通。
例子:
server1 $ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
server1 $ irb
irb(main):001:0> "test".hash
=> 4146582576695053125
server2 $ ruby -v
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
server2 $ irb
"test".hash
=> 3479379392688537032
这些机器是具有相同规格和构建的 EC2 实例。
【问题讨论】:
-
我们想知道您是否还可以在
irb中显示RUBY_VERSION的值。 -
例如:
ruby-1.9.2-p290 :002 > RUBY_VERSION => "1.9.2" -
irb(main):001:0> RUBY_VERSION => "1.9.2"对于两者 -
期望它们相同的任何特殊原因?由于它们是 EC2 实例,它们是否运行相同的映像?
-
我相信它们是相同的图像,但我没有设置它们。我认为它们保持一致的主要理由来自我对 .hashCode 的 Java 经验。此外,在 String.hash 文档中没有提到它们不一致。
标签: ruby ruby-on-rails-3 hash