Redis
 sql >> Cơ Sở Dữ Liệu >  >> NoSQL >> Redis

MurmurHash - nó là gì?

Murmur là một nhóm các hàm băm có mục đích chung tốt, thích hợp cho việc sử dụng phi mật mã. Như đã nói bởi Austin Appleby, MurmurHash cung cấp các lợi ích sau:

  • đơn giản (về số lượng các lệnh lắp ráp được tạo).
  • khả năng phân phối tốt (vượt qua các bài kiểm tra chi bình phương cho thực tế tất cả các bộ phím và kích thước thùng.
  • hành vi tuyết lở tốt (độ lệch tối đa là 0,5%).
  • khả năng chống va chạm tốt (vượt qua bài kiểm tra tra tấn ếch.c của Bob Jenkin. Không thể xảy ra va chạm đối với các khóa 4 byte, không có chênh lệch nhỏ (1 đến 7 bit)).
  • hiệu suất tuyệt vời trên phần cứng Intel / AMD, cân bằng tốt giữa chất lượng băm và mức tiêu thụ CPU.

Bạn chắc chắn có thể sử dụng nó để băm UUID (giống như bất kỳ hàm băm nâng cao nào khác:CityHash, Jenkins, Paul Hsieh's, v.v.). Giờ đây, bộ bit Redis được giới hạn ở 4 GB bit (512 MB). Vì vậy, bạn cần giảm 128 bit dữ liệu (UUID) xuống 32 bit (giá trị băm). Bất kể chất lượng của hàm băm là gì, sẽ có xung đột.

Sử dụng một hàm băm được thiết kế riêng như Murmur sẽ tối đa hóa chất lượng của phân phối và giảm thiểu số lần va chạm, nhưng nó không mang lại sự đảm bảo nào khác.

Dưới đây là một số liên kết so sánh chất lượng của các hàm băm mục đích chung:

http://www.azillionmonkeys.com/qed/hash.html

http://www.strchr.com/hash_functions

http://blog.aggregateknowledge.com/2011/12/05/choosing-a-good-hash- Chức năng-part-1/

http://blog.aggregateknowledge.com/2011/12/29/choosing-a-good-hash- Chức năng-part-2/

http://blog.aggregateknowledge.com/2012/02/02/choosing-a-good-hash- Chức năng-part-3/



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Kiểm tra xem một giá trị tồn tại trong danh sách đã được Redis chưa

  2. Nhận nhiều giá trị chính từ Redis

  3. Laravel - Chạy công việc theo trình tự

  4. Redis Vs. Đã ghi nhớ

  5. Đã sắp xếp tập hợp có kích thước cố định trong Redis?