Murmurは、暗号化されていない使用に適した、優れた汎用ハッシュ関数のファミリーです。オースティンアップルビーが述べたように、MurmurHashには次の利点があります。
- シンプル(生成されたアセンブリ命令の数に関して)
- 良好な分布(実質的にすべてのキーセットとバケットサイズのカイ2乗検定に合格。
- 良好な雪崩挙動(最大バイアス0.5%)。
- 優れた衝突耐性(Bob Jenkinのfrog.c拷問テストに合格。4バイトのキーでは衝突は不可能、小さな(1〜7ビット)差分はありません)。
- Intel / AMDハードウェアでの優れたパフォーマンス、ハッシュ品質とCPU消費の間の適切なトレードオフ。
確かにこれを使用してUUIDをハッシュできます(他の高度なハッシュ関数のように:CityHash、Jenkins、Paul Hsiehなど)。現在、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/