Dữ liệu lõiPhân tích

Đếm ở quy mô lớn bằng cấu trúc xác suất

Người truy cập duy nhất, “chúng ta đã thấy cái này chưa?”, các mục hàng đầu và tần suất trên hàng tỷ sự kiện, mỗi thứ trong một lượng bộ nhớ nhỏ, cố định.

cấu trúc xác suất
4
bộ nhớ cho mỗi cấu trúc
Cố định
giới hạn sai số
Đã biết
Bước 1 trên 5
Người truy cập duy nhất

Thêm id người truy cập vào một HyperLogLog. Bộ nhớ vẫn nhỏ dù có bao nhiêu id đến.

Phiên ví dụplaying
# Người truy cập duy nhất
hotkv> PFADD visitors:2026-10-16 user:42 user:77 user:91
(integer) 1

Một hướng dẫn minh họa động với các lệnh HotKV thật và phản hồi ví dụ. Nhấn vào bất kỳ bước nào để nhảy tới đó. Lệnh và phản hồi giữ nguyên bằng tiếng Anh, đúng như bạn gõ và thấy trong HotKV.

Vấn đề

Câu trả lời chính xác cho “có bao nhiêu người dùng duy nhất”, “chúng ta đã gửi email này trước đây chưa” hoặc “các tìm kiếm hàng đầu là gì” cần bộ nhớ tăng theo từng mục riêng biệt. Ở quy mô hàng tỷ sự kiện, điều đó thành hàng gigabyte tập hợp và bộ đếm cho mỗi câu hỏi.

HotKV xử lý như thế nào

Cấu trúc xác suất đánh đổi một sai số nhỏ, đã biết để lấy bộ nhớ không đổi. HyperLogLog đếm các mục riêng biệt, bộ lọc Bloom trả lời tư cách thành viên, Top-K theo dõi các mục thường gặp nhất và Count-min sketch ước lượng mức độ thường xuyên của bất kỳ mục nào. Cả bốn đều được tích hợp trong HotKV.

Từng bước một

Điều gì xảy ra, từng lệnh một

  1. 01

    Người truy cập duy nhất

    Thêm id người truy cập vào một HyperLogLog. Bộ nhớ vẫn nhỏ dù có bao nhiêu id đến.

    PFADD visitors:2026-10-16 user:42 user:77 user:91
  2. 02

    Có bao nhiêu?

    Một ước lượng số người truy cập riêng biệt với sai số chuẩn nhỏ.

    PFCOUNT visitors:2026-10-16
  3. 03

    Không bao giờ gửi hai lần

    Trước khi gửi email chiến dịch, hãy kiểm tra địa chỉ này đã nhận chưa.

    BF.EXISTS sent:campaign:fall ada@example.com
  4. 04

    Tìm kiếm hàng đầu

    Top-K giữ các mục thường gặp nhất khi sự kiện liên tục đến.

    TOPK.LIST searches:today WITHCOUNT
  5. 05

    Tần suất của bất kỳ mục nào

    Một Count-min sketch ước lượng số đếm của bất kỳ mục nào, có trong danh sách hay không.

    CMS.QUERY pageviews /home /pricing /blog
Phù hợp ở đâu

Các tình huống thực tế

Phân tích web và ứng dụng

Người dùng duy nhất hằng ngày và hằng tháng theo từng trang hoặc tính năng, được gộp qua các ngày bằng PFMERGE.

Email và thông báo

Bộ lọc Bloom ngăn việc gửi trùng qua các lần thử lại và các chiến dịch.

Tìm kiếm và thương mại

Các truy vấn hàng đầu và sản phẩm được xem nhiều nhất được theo dõi trực tiếp cho việc bày bán.

Tích hợp sẵn

Bạn nhận được gì

HyperLogLog

Đếm các mục riêng biệt, gộp được giữa các bucket.

PFADDPFCOUNTPFMERGE

Bộ lọc Bloom

Tư cách thành viên với tỷ lệ dương tính giả có thể cấu hình.

BF.RESERVEBF.ADDBF.EXISTS

Top-K

Các mục thường gặp nhất trong một luồng.

TOPK.ADDTOPK.LIST

Count-min sketch

Ước lượng tần suất cho bất kỳ mục nào.

CMS.INCRBYCMS.QUERY

Câu hỏi thường gặp

Chúng chính xác đến đâu?

Bộ lọc Bloom cho phép bạn đặt tỷ lệ lỗi, và Count-min sketch cho phép đặt chiều rộng và chiều sâu. HyperLogLog có sai số chuẩn nhỏ, cố định.

Bộ lọc Bloom có thể bỏ sót thứ nó đã thấy không?

Không. Nó có thể báo dương tính giả, không bao giờ âm tính giả.

Tôi có cần module không?

Không. Chúng là một phần của HotKV.

Trường hợp sử dụng liên quan

Thử trên khối lượng công việc của chính bạn

HotKV nói giao thức Redis, nên bạn có thể trỏ một client hiện có tới nó và chạy chính những lệnh này.