KerndataPerformance

Caching

Houd je heetste data in het geheugen en beantwoord reads ruim onder een milliseconde, op een engine die elke core aan het werk zet.

GET/s met pipelining, gemeten
36.6M
TTL-precisie
ns
bestaande clients werken
RESP2/3
Stap 1 van 5
Lezen via de cache

Een hit komt rechtstreeks uit het geheugen terug. De database wordt niet aangeraakt.

Voorbeeldsessieplaying
# Lezen via de cache
hotkv> GET product:1001
"{\"name\":\"Desk lamp\",\"price\":39}"

Een geanimeerde walkthrough met echte HotKV-commando's en voorbeeldantwoorden. Klik op een stap om ernaartoe te springen. Commando's en antwoorden blijven Engels, precies zoals je ze in HotKV typt en ziet.

Het probleem

Databases zijn traag en duur om te raadplegen voor data die duizenden keren per seconde wordt gelezen. Elke paginaweergave, API-aanroep of dashboardverversing herhaalt dezelfde query, en de database wordt de bottleneck lang voordat je applicatie dat is.

Hoe HotKV het aanpakt

HotKV staat voor de database en houdt resultaten in het geheugen. Je applicatie leest eerst uit HotKV en valt alleen bij een miss terug op de database. Omdat HotKV commando's op veel threads tegelijk uitvoert, stuurt een drukke cache niet elke client door één core, en met tags kun je een hele groep items ongeldig maken wanneer de onderliggende data verandert.

Stap voor stap

Wat er gebeurt, commando voor commando

  1. 01

    Lezen via de cache

    Een hit komt rechtstreeks uit het geheugen terug. De database wordt niet aangeraakt.

    GET product:1001
  2. 02

    Miss, dus eenmaal laden en cachen

    Bij een miss leest de applicatie de database eenmaal en cachet het resultaat vijf minuten.

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

    Items taggen op waarvan ze afhangen

    Elke gecachete pagina die verlichtingsproducten toont, draagt dezelfde tag.

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

    De groep ongeldig maken

    Prijzen zijn gewijzigd. Som elke sleutel met de tag op en verwijder ze in één pipeline.

    TAG.MEMBERS catalog:lighting
  5. 05

    Zeer kortlevende items

    Een flash-token, al ingesteld, dat na 250 ms moet verdwijnen, met nanoseconde-precisie.

    NEXPIRE flash:token:9 250000000
Waar het past

Praktijkscenario's

Webwinkels

Productpagina's, prijzen en voorraadniveaus worden duizenden keren per seconde gelezen en per tag ververst wanneer de catalogus verandert.

API's en mobiele backends

Antwoorden van populaire endpoints worden gecachet met korte TTL's, zodat verkeerspieken het geheugen raken in plaats van de database.

Contentsites

Gerenderde fragmenten en artikelmetadata worden minuten gecachet en per tag ongeldig gemaakt wanneer een redacteur publiceert.

Ingebouwd

Wat je krijgt

TTL's van seconden tot nanoseconden

EXPIRE en PEXPIRE werken zoals je verwacht. NEXPIRE voegt nanoseconde-precisie toe.

EXPIREPEXPIRENEXPIRE

Ongeldig maken per tag

Label sleutels met TAG.SET en vind daarna elke sleutel met een label.

TAG.SETTAG.MEMBERS

Optionele compressie

Grote payloads kunnen worden gecomprimeerd zodat meer van je werkset in het geheugen past.

Multithreaded reads

Commando's worden op parallelle threads uitgevoerd, dus de doorvoer groeit mee met de cores. De cijfers staan op de pagina Performance.

GETMGET

Veelgestelde vragen

Kan ik mijn bestaande Redis-client gebruiken?

HotKV spreekt het Redis-protocol (RESP2 en RESP3), dus standaard Redis-clients maken er verbinding mee. Controleer de commandoreferentie voor de commando's waarop je vertrouwt.

Hoe maak ik een groep gecachete sleutels ongeldig?

Tag de sleutels met TAG.SET wanneer je ze cachet, roep daarna TAG.MEMBERS aan en verwijder wat terugkomt.

Waar komt het cijfer 36.6M vandaan?

Het is de GET-doorvoer met pipelining uit de gepubliceerde benchmark van HotKV. De methode en hardware staan op de pagina Performance.

Verwante use cases

Probeer het op je eigen workload

HotKV spreekt het Redis-protocol, dus je kunt een bestaande client erop richten en dezelfde commando's uitvoeren.