我一直在试图对MurmurHash的功能有一个较高的了解。
我已经阅读了基本说明,但尚未找到何时使用它以及为什么使用的很好解释。我知道它很快,但是想知道更多。
我问了一个有关如何将UUID放入Redis位集中的相关问题,有人建议使用MurmurHash。它可以工作,但我想了解风险/好处。
我一直在试图对MurmurHash的功能有一个较高的了解。
我已经阅读了基本说明,但尚未找到何时使用它以及为什么使用的很好解释。我知道它很快,但是想知道更多。
我问了一个有关如何将UUID放入Redis位集中的相关问题,有人建议使用MurmurHash。它可以工作,但我想了解风险/好处。
Answers:
Murmur是一系列良好的通用哈希函数,适用于非加密用途。如Austin Appleby所述,MurmurHash具有以下优点:
您当然可以使用它来对UUID进行哈希处理(就像其他任何高级哈希函数一样:CityHash,Jenkins,Paul Hsieh's等)。现在,Redis位集限制为4 GB位(512 MB)。因此,您需要将128位数据(UUID)减少到32位(哈希值)。无论哈希函数的质量如何,都将发生冲突。
使用像Murmur这样的工程哈希函数可以最大程度地提高分发质量,并最大程度减少冲突次数,但是它没有其他保证。
以下是一些比较通用哈希函数质量的链接:
http://www.azillionmonkeys.com/qed/hash.html
http://www.strchr.com/hash_functions
http://blog.aggregateknowledge.com/2011/12/05/choosing-a-good-hash-function-part-1/
http://blog.aggregateknowledge.com/2011/12/29/choosing-a-good-hash-function-part-2/
http://blog.aggregateknowledge.com/2012/02/02/choosing-a-good-hash-function-part-3/