Dane podstawoweWydajność

Cache

Trzymaj najgorętsze dane w pamięci i odpowiadaj na odczyty znacznie poniżej milisekundy, na silniku, który angażuje każdy rdzeń.

GET/s w potoku, zmierzone
36.6M
precyzja TTL
ns
istniejący klienci działają
RESP2/3
Krok 1 z 5
Czytaj przez cache

Trafienie wraca prosto z pamięci. Baza danych nie jest dotykana.

Przykładowa sesjaplaying
# Czytaj przez cache
hotkv> GET product:1001
"{\"name\":\"Desk lamp\",\"price\":39}"

Animowany przegląd z prawdziwymi poleceniami HotKV i przykładowymi odpowiedziami. Kliknij dowolny krok, aby do niego przejść. Polecenia i odpowiedzi pozostają po angielsku, dokładnie tak, jak je wpisujesz i widzisz w HotKV.

Problem

Bazy danych są wolne i drogie w odpytywaniu o dane odczytywane tysiące razy na sekundę. Każde wyświetlenie strony, wywołanie API lub odświeżenie dashboardu powtarza to samo zapytanie, a baza staje się wąskim gardłem na długo przed Twoją aplikacją.

Jak radzi sobie z tym HotKV

HotKV stoi przed bazą danych i trzyma wyniki w pamięci. Aplikacja najpierw czyta z HotKV i wraca do bazy tylko przy pudle. Ponieważ HotKV wykonuje polecenia na wielu wątkach naraz, ruchliwy cache nie przepuszcza wszystkich klientów przez jeden rdzeń, a tagi pozwalają unieważnić całą grupę wpisów, gdy zmieniają się dane źródłowe.

Krok po kroku

Co się dzieje, polecenie po poleceniu

  1. 01

    Czytaj przez cache

    Trafienie wraca prosto z pamięci. Baza danych nie jest dotykana.

    GET product:1001
  2. 02

    Pudło, więc wczytaj raz i zapisz w cache

    Przy pudle aplikacja raz czyta bazę i zapisuje wynik w cache na pięć minut.

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

    Taguj wpisy tym, od czego zależą

    Każda buforowana strona pokazująca produkty oświetleniowe ma ten sam tag.

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

    Unieważnij grupę

    Ceny się zmieniły. Wypisz każdy klucz z tagiem i usuń je jednym potokiem.

    TAG.MEMBERS catalog:lighting
  5. 05

    Bardzo krótko żyjące wpisy

    Token błyskawiczny, już ustawiony, który musi zniknąć po 250 ms, z precyzją nanosekundową.

    NEXPIRE flash:token:9 250000000
Gdzie się sprawdza

Scenariusze z życia

Sklepy internetowe

Strony produktów, ceny i stany magazynowe są czytane tysiące razy na sekundę i odświeżane według tagu, gdy zmienia się katalog.

API i backendy mobilne

Odpowiedzi popularnych endpointów są buforowane z krótkimi TTL, więc skoki ruchu trafiają w pamięć zamiast w bazę danych.

Witryny z treścią

Wyrenderowane fragmenty i metadane artykułów są buforowane na minuty i unieważniane według tagu, gdy redaktor publikuje.

Wbudowane

Co dostajesz

TTL od sekund do nanosekund

EXPIRE i PEXPIRE działają, jak oczekujesz. NEXPIRE dodaje precyzję nanosekundową.

EXPIREPEXPIRENEXPIRE

Unieważnianie według tagu

Oznaczaj klucze przez TAG.SET, a potem znajdź każdy klucz z etykietą.

TAG.SETTAG.MEMBERS

Opcjonalna kompresja

Duże ładunki mogą być kompresowane, aby więcej Twojego zbioru roboczego mieściło się w pamięci.

Wielowątkowe odczyty

Polecenia wykonują się na równoległych wątkach, więc przepustowość rośnie wraz z rdzeniami. Liczby są na stronie Wydajność.

GETMGET

Częste pytania

Czy mogę użyć istniejącego klienta Redis?

HotKV mówi protokołem Redis (RESP2 i RESP3), więc standardowi klienci Redis się z nim łączą. Sprawdź opis poleceń dla poleceń, na których polegasz.

Jak unieważnić grupę buforowanych kluczy?

Otaguj klucze przez TAG.SET przy buforowaniu, a następnie wywołaj TAG.MEMBERS i usuń to, co wróci.

Skąd pochodzi liczba 36.6M?

To przepustowość GET w potoku z opublikowanego benchmarku HotKV. Metoda i sprzęt są na stronie Wydajność.

Powiązane przypadki użycia

Wypróbuj na własnym obciążeniu

HotKV mówi protokołem Redis, więc możesz skierować na niego istniejącego klienta i uruchomić te same polecenia.