Základní dataVýkon

Cachování

Držte svá nejžhavější data v paměti a odpovídejte na čtení hluboko pod milisekundu, na jádru, které zapojí každé jádro procesoru.

GET/s v pipeline, změřeno
36.6M
přesnost TTL
ns
stávající klienti fungují
RESP2/3
Krok 1 z 5
Čtení přes cache

Zásah se vrátí přímo z paměti. Databáze se nedotkne.

Ukázková relaceplaying
# Čtení přes cache
hotkv> GET product:1001
"{\"name\":\"Desk lamp\",\"price\":39}"

Animovaný průvodce se skutečnými příkazy HotKV a ukázkovými odpověďmi. Kliknutím na kterýkoli krok na něj přeskočíte. Příkazy a odpovědi zůstávají anglicky, přesně tak, jak je v HotKV zadáváte a vidíte.

Problém

Zasahovat databázi kvůli datům, která se čtou tisíckrát za sekundu, je pomalé a drahé. Každé zobrazení stránky, volání API nebo obnovení dashboardu opakuje stejný dotaz a databáze se stává úzkým hrdlem dávno předtím, než vaše aplikace.

Jak to řeší HotKV

HotKV stojí před databází a drží výsledky v paměti. Vaše aplikace čte nejdřív z HotKV a k databázi se vrací jen při minutí. Protože HotKV provádí příkazy na mnoha vláknech najednou, vytížená cache neprotlačuje všechny klienty jediným jádrem a tagy umožňují invalidovat celou skupinu položek, když se změní podkladová data.

Krok za krokem

Co se děje, příkaz po příkazu

  1. 01

    Čtení přes cache

    Zásah se vrátí přímo z paměti. Databáze se nedotkne.

    GET product:1001
  2. 02

    Minutí, takže jednou načíst a uložit

    Při minutí aplikace jednou přečte databázi a výsledek uloží do cache na pět minut.

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

    Označte položky podle toho, na čem závisejí

    Každá cachovaná stránka, která ukazuje svítidla, nese stejný tag.

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

    Invalidace skupiny

    Ceny se změnily. Vypište každý klíč s tagem a smažte je v jedné pipeline.

    TAG.MEMBERS catalog:lighting
  5. 05

    Velmi krátce žijící položky

    Bleskový token, už nastavený, který musí zmizet po 250 ms, s přesností na nanosekundy.

    NEXPIRE flash:token:9 250000000
Kam to zapadá

Scénáře z praxe

Internetové obchody

Stránky produktů, ceny a stavy zásob se čtou tisíckrát za sekundu a při změně katalogu se obnovují podle tagu.

API a mobilní backendy

Odpovědi populárních endpointů se cachují s krátkým TTL, takže špičky provozu zasáhnou paměť místo databáze.

Obsahové weby

Vyrenderované fragmenty a metadata článků se cachují na minuty a při zveřejnění editorem se invalidují podle tagu.

Zabudováno

Co dostanete

TTL od sekund po nanosekundy

EXPIRE a PEXPIRE fungují, jak čekáte. NEXPIRE přidává přesnost na nanosekundy.

EXPIREPEXPIRENEXPIRE

Invalidace podle tagu

Označte klíče pomocí TAG.SET a pak najděte každý klíč se štítkem.

TAG.SETTAG.MEMBERS

Volitelná komprese

Velká data lze komprimovat, aby se do paměti vešlo víc vaší pracovní sady.

Multithreadová čtení

Příkazy se provádějí na paralelních vláknech, takže propustnost roste s jádry. Čísla jsou na stránce Výkon.

GETMGET

Časté otázky

Mohu použít svého stávajícího klienta Redisu?

HotKV mluví protokolem Redisu (RESP2 a RESP3), takže se k němu připojí standardní klienti Redisu. Příkazy, na které spoléháte, ověřte v přehledu příkazů.

Jak invaliduji skupinu cachovaných klíčů?

Označte klíče pomocí TAG.SET při jejich cachování, pak zavolejte TAG.MEMBERS a smažte to, co vrátí.

Odkud pochází údaj 36,6M?

Je to propustnost GET v pipeline z publikovaného benchmarku HotKV. Metodika a hardware jsou na stránce Výkon.

Související případy použití

Vyzkoušejte to na své zátěži

HotKV mluví protokolem Redisu, takže na něj můžete nasměrovat stávajícího klienta a spustit tytéž příkazy.