Redis
 sql >> база данни >  >> NoSQL >> Redis

MurmurHash - какво е това?

Murmur е семейство от добри функции за хеширане с общо предназначение, подходящи за некриптографска употреба. Както е посочено от Остин Епълби, MurmurHash предоставя следните предимства:

  • прости (по отношение на броя на генерираните инструкции за сглобяване).
  • добро разпределение (преминаване на хи-квадрат тестове за практически всички ключове и размери на сегментите.
  • добро лавинно поведение (максимално отклонение от 0,5%).
  • добра устойчивост на сблъсък (издържа теста за мъчения frog.c на Боб Дженкин. Не са възможни сблъсъци за 4-байтови ключове, няма малки (1- до 7-битови) диференциали).
  • страхотна производителност на хардуера на Intel/AMD, добър компромис между хеш качеството и консумацията на процесора.

Със сигурност можете да го използвате за хеширане на 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/



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Разлика между StackExchange.Redis и ServiceStack.Redis

  2. ServiceStack.Redis:Не може да се свърже:sPort:50071

  3. Redis Python - как да изтриете всички ключове според определен модел В python, без итерация на python

  4. node redis, променливите се споделят между клиентите?

  5. Разделете низ от символ в Lua