sql >> Database teknologi >  >> NoSQL >> Redis

MurmurHash - hvad er det?

Murmur er en familie af gode hashing-funktioner til generelle formål, velegnet til ikke-kryptografisk brug. Som angivet af Austin Appleby giver MurmurHash følgende fordele:

  • simpelt (med hensyn til antallet af genererede monteringsinstruktioner).
  • god fordeling (består chi-kvadrat-tests for stort set alle nøglesæt og spandestørrelser.
  • god lavineadfærd (max bias på 0,5%).
  • god kollisionsmodstand (består Bob Jenkins frog.c torturtest. Ingen kollisioner mulige for 4-byte nøgler, ingen små (1- til 7-bit) forskelle).
  • god ydeevne på Intel/AMD-hardware, god afvejning mellem hashkvalitet og CPU-forbrug.

Du kan helt sikkert bruge det til at hash UUID'er (som alle andre avancerede hashing-funktioner:CityHash, Jenkins, Paul Hsieh's, etc ...). Nu er et Redis-bitset begrænset til 4 GB bit (512 MB). Så du skal reducere 128 bit data (UUID) til 32 bit (hashed værdi). Uanset kvaliteten af ​​hashing-funktionen, vil der være kollisioner.

Brug af en konstrueret hash-funktion som Murmur vil maksimere kvaliteten af ​​distributionen og minimere antallet af kollisioner, men det giver ingen anden garanti.

Her er nogle links, der sammenligner kvaliteten af ​​hash-funktioner til generelle formål:

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. Skinner Puma løber tør for Redis-forbindelser

  2. Hvordan skalerer man Node.js WebSocket Redis Server?

  3. Få adgang til MongoDB direkte via JavaScript

  4. hvordan man holder cachen opdateret