Murmur - це родина хороших хеш-функцій загального призначення, придатних для некриптографічного використання. Як заявив Остін Епплбі, MurmurHash забезпечує наступні переваги:
- простий (за кількістю сформованих інструкцій з монтажу).
- хороший розподіл (проходження тестів хі-квадрат практично для всіх наборів ключів та розмірів сегментів.
- хороша поведінка лавини (макс. упередження 0,5%).
- хороша стійкість до зіткнень (проходить тест на тортури Боба Дженкіна frog.c. Неможливо зіткнення для 4-байтових ключів, не малих (1- до 7-бітних) диференціалів).
- чудова продуктивність на апаратному забезпеченні Intel / AMD, хороший компроміс між якістю хешу та споживанням процесора.
Ви можете напевно використовувати його для хешування UUID (як і будь-яких інших розширених хеш-функцій: CityHash, Jenkins, Paul Hsieh's тощо ...). Зараз біт Redis обмежений 4 бітами (512 МБ). Отже, вам потрібно зменшити 128 біт даних (UUID) до 32 бітів (хеш-значення). Якою б не була якість функції хешування, будуть зіткнення.
Використання розробленої хеш-функції, як Murmur, дозволить максимізувати якість розподілу та мінімізувати кількість зіткнень, але жодних інших гарантій не надає.
Ось кілька посилань для порівняння якості загальних хеш-функцій:
http://www.azillionmonkeys.com/qed/hash.html
http://www.strchr.com/hash_functions
http://blog.aggregateknowledge.com/2011/12/05/choose-a-good-hash-function-part-1/
http://blog.aggregateknowledge.com/2011/12/29/choose-a-good-hash-function-part-2/
http://blog.aggregateknowledge.com/2012/02/02/choose-a-good-hash-function-part-3/