see*_*ead 63 hash redis murmurhash
我一直试图高度了解MurmurHash的作用.
我已经阅读了一个基本的描述,但还没有找到何时使用它的好解释以及原因.我知道它非常快,但想知道更多.
我问了一个相关的问题,关于如何将UUID放入Redis bitset,有人建议使用MurmurHash.它有效,但我想了解风险/收益.
Did*_*zia 94
Murmur是一个良好的通用散列函数系列,适用于非加密用法.如Austin Appleby所述,MurmurHash提供以下好处:
您当然可以使用它来散列UUID(就像任何其他高级散列函数一样:CityHash,Jenkins,Paul Hsieh等等).现在,Redis bitset限制为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/