Dữ liệu lõiHiệu năng

Caching

Giữ dữ liệu nóng nhất của bạn trong bộ nhớ và trả lời các lần đọc trong chưa đến một mili giây, trên một engine cho mọi lõi cùng làm việc.

GET/giây có pipeline, đã đo
36.6M
độ chính xác TTL
ns
client hiện có đều dùng được
RESP2/3
Bước 1 trên 5
Đọc qua cache

Một lần trúng trả về thẳng từ bộ nhớ. Cơ sở dữ liệu không bị chạm tới.

Phiên ví dụplaying
# Đọc qua cache
hotkv> GET product:1001
"{\"name\":\"Desk lamp\",\"price\":39}"

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 đề

Truy cập cơ sở dữ liệu chậm và tốn kém cho dữ liệu được đọc hàng nghìn lần mỗi giây. Mỗi lượt xem trang, lệnh gọi API hay lần làm mới dashboard lặp lại cùng một truy vấn, và cơ sở dữ liệu trở thành nút thắt cổ chai từ rất lâu trước ứng dụng của bạn.

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

HotKV nằm phía trước cơ sở dữ liệu và giữ kết quả trong bộ nhớ. Ứng dụng của bạn đọc từ HotKV trước và chỉ quay về cơ sở dữ liệu khi trượt. Vì HotKV chạy lệnh trên nhiều luồng cùng lúc, một cache bận rộn không dồn mọi client qua một lõi duy nhất, và các thẻ cho phép bạn vô hiệu hóa cả một nhóm mục khi dữ liệu nền thay đổi.

Từng bước một

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

  1. 01

    Đọc qua cache

    Một lần trúng trả về thẳng từ bộ nhớ. Cơ sở dữ liệu không bị chạm tới.

    GET product:1001
  2. 02

    Trượt, nên nạp một lần và cache lại

    Khi trượt, ứng dụng đọc cơ sở dữ liệu một lần và cache kết quả trong năm phút.

    SET product:2002 "{\"name\":\"Oak desk\",\"price\":420}" EX 300
  3. 03

    Gắn thẻ các mục theo thứ chúng phụ thuộc

    Mỗi trang đã cache hiển thị sản phẩm chiếu sáng đều mang cùng một thẻ.

    TAG.SET product:1001 catalog:lighting
  4. 04

    Vô hiệu hóa cả nhóm

    Giá đã thay đổi. Liệt kê mọi khóa có thẻ đó và xóa chúng trong một pipeline.

    TAG.MEMBERS catalog:lighting
  5. 05

    Các mục tồn tại rất ngắn

    Một flash token, đã được đặt, phải biến mất sau 250 ms, với độ chính xác nano giây.

    NEXPIRE flash:token:9 250000000
Phù hợp ở đâu

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

Cửa hàng trực tuyến

Trang sản phẩm, giá và mức tồn kho được đọc hàng nghìn lần mỗi giây và được làm mới theo thẻ khi danh mục thay đổi.

API và backend di động

Phản hồi của các endpoint phổ biến được cache với TTL ngắn, nên các đợt tăng đột biến lưu lượng đập vào bộ nhớ thay vì cơ sở dữ liệu.

Trang nội dung

Các đoạn đã render và metadata bài viết được cache trong vài phút và bị vô hiệu hóa theo thẻ khi biên tập viên đăng bài.

Tích hợp sẵn

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

TTL từ giây đến nano giây

EXPIRE và PEXPIRE hoạt động như bạn mong đợi. NEXPIRE bổ sung độ chính xác nano giây.

EXPIREPEXPIRENEXPIRE

Vô hiệu hóa theo thẻ

Gắn nhãn cho khóa bằng TAG.SET, rồi tìm mọi khóa có một nhãn.

TAG.SETTAG.MEMBERS

Nén tùy chọn

Các payload lớn có thể được nén để nhiều hơn tập làm việc của bạn nằm vừa trong bộ nhớ.

Đọc đa luồng

Lệnh được thực thi trên các luồng song song, nên thông lượng tăng theo số lõi. Số liệu nằm ở trang Hiệu năng.

GETMGET

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

Tôi có thể dùng client Redis hiện có không?

HotKV nói giao thức Redis (RESP2 và RESP3), nên các client Redis tiêu chuẩn kết nối được với nó. Hãy xem tham chiếu lệnh cho những lệnh bạn dựa vào.

Làm sao vô hiệu hóa một nhóm khóa đã cache?

Gắn thẻ cho các khóa bằng TAG.SET khi bạn cache chúng, rồi gọi TAG.MEMBERS và xóa những gì trả về.

Con số 36.6M đến từ đâu?

Đó là thông lượng GET có pipeline từ benchmark đã công bố của HotKV. Phương pháp và phần cứng nằm ở trang Hiệu năng.

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.