Betekenis van opslaan in cache
Opslaan in cache houdt herbruikbare kopieën van vaak geraadpleegde gegevens in het geheugen, zodat apps herhaalde databaseoproepen vermijden en resultaten sneller retourneren.
Opslaan in cache houdt herbruikbare kopieën van vaak geraadpleegde gegevens in het geheugen, zodat apps herhaalde databaseoproepen vermijden en resultaten sneller retourneren.
Opslaan in cache is het opslaan van sleutel-waardedata in tijdelijk geheugen (zoals een niet-relationele NoSQL-database (NoSQL) database) zodat apps het sneller kunnen ophalen dan uit traditionele opslag. In cloudopslagarchitecturen, waar aanvragen vaak over netwerken heen gaan en gedeelde services raken, kan opslaan in cache helpen om responstijden laag te houden en herhalend werk te verminderen.
De meeste systemen houden een duurzame 'source of truth' aan (een database) voor volledige datasets en bewaren daarnaast een cache voor tijdelijke subsets die vaak worden gelezen. Wanneer er een aanvraag binnenkomt, controleert de app eerst de cache; als de gegevens daar staan, worden ze snel geretourneerd zonder de back-end opnieuw te raadplegen. Ontwikkelaars slaan ook verwerkte gegevens op in de cache en hergebruiken deze om aanvragen sneller te verwerken dan standaardquery's naar relationele databases, SQL-databases of open-source PostgreSQL-databases.
Goede kandidaten zijn gegevens die herhaaldelijk worden gelezen en gegevens die niet vaak veranderen (bijvoorbeeld product- en prijsinformatie of gedeelde statische resources die duur zijn om op te bouwen).
Als een bewerking gegevens transformeert of een ingewikkelde berekening uitvoert, kan het opslaan in cache van het resultaat herberekening voor volgende aanvragen voorkomen.
Ontwikkelaars gebruiken caches met meerdere niveaus ('cachelagen') om verschillende typen gegevens op te slaan in aparte caches, op basis van de vraag. Door een of meer cachelagen toe te voegen, kun je de doorvoer en latentie in een datalaag verbeteren.
In-memory-opslag wordt vaak gebruikt om grote hoeveelheden sessiegegevens tijdelijk op te slaan, zoals gebruikersinvoer, winkelwagenitems of personalisatievoorkeuren. Voor stateful apps slaan teams ook sessiestatus op in de cache, zodat de app stateless kan zijn.
Opslaan in cache kan de prestaties op een paar concrete manieren verbeteren:
In veel cloudontwerpen staat een cache naast een primaire gegevensopslag (zoals een database). De primaire opslag houdt de volledige, duurzame dataset op de cloudserver, terwijl de cache een kleinere, tijdelijke subset bewaart die sneller te lezen is.
Een veelgebruikte configuratie is een zelfstandige cachelaag, of een cache die in de app- of databaselaag zit, gekozen op basis van waar je snelle reads nodig hebt.
Sommige systemen gebruiken opslaan in cache met meerdere niveaus ('cachelagen'), zodat verschillende soorten gegevens op basis van de vraag in verschillende caches staan. Door een of meer cachelagen toe te voegen, kun je de doorvoer en latentie voor de datalaag verbeteren en de totale kosten verlagen door de belasting van de back-end te verminderen.
Teams cachen meestal gegevens die in een paar categorieën vallen:
Er zijn verschillende standaardmanieren waarop apps gegevens lezen uit en schrijven naar een cache. Hier zijn de meest gebruikte patronen en wat ze in de praktijk betekenen.
Door cachelagen te gebruiken kun je doorvoer en latentie verbeteren, omdat veelvoorkomende aanvragen uit de cache worden bediend in plaats van steeds opnieuw de back-endopslag te raadplegen. Hierdoor hoeft je database-infrastructuur minder snel te worden opgeschaald, omdat er in eerste instantie al minder aanvragen bij de database terechtkomen.
Voor apps met pieken in gebruik kunnen in-memory caches helpen om latentie te beperken door vaak opgevraagde gegevens dicht bij de plek te houden waar ze worden gebruikt.
Gebruik deze als startpunt als je een werkstroom kiest:
Opslaan in cache verbetert de prestaties van apps, omdat lezen uit een in-memory cache sneller is dan lezen uit een gegevensopslag op schijf. Als er meer aanvragen uit de cache worden bediend, versturen systemen minder queries naar back-enddatabases. Daardoor hoeft je database-infrastructuur mogelijk minder snel te worden opgeschaald en dalen de gerelateerde kosten.
Opslaan in cache helpt om herhaald werk te beperken. Gegevens die vaak worden gelezen, of die duur zijn om samen te stellen, kunnen één keer worden opgeslagen en opnieuw worden gebruikt. Als een bewerking een ingewikkelde berekening uitvoert of gegevens omzet, vermindert het opslaan in cache van het resultaat het herhaaldelijk berekenen voor latere aanvragen.
Veel sites cachen pagina-uitvoer, zoals HTML en clientscripts, zodat de server de gecachte uitvoer kan teruggeven in plaats van de paginacode telkens opnieuw uit te voeren. Opslaan in cache ondersteunt ook webmultimediascenario's via webcaches en netwerkcaching, zoals content delivery networks (CDN's).
Apps slaan vaak tijdelijke subsets van gegevens op in een cache voor snelle ophaalacties, terwijl de primaire database de complete duurzame dataset bewaart. Het opslaan in cache van verwerkte gegevens en deze opnieuw gebruiken, kan aanvragen sneller bedienen dan standaarddatabasequeries.
Teams voegen vaak een of meer cachelagen toe om doorvoer en latentie te verbeteren, veelvoorkomende queries uit de cache te bedienen en de databasebelasting te verminderen. In-memory caches kunnen helpen bij gebruikspieken en een stijgende behoefte aan doorvoer, doordat ze latentie beperken tijdens die periodes.
Opslaan in cache wordt vaak gebruikt om grote hoeveelheden kortstondige sessiegegevens, zoals gebruikersinvoer of personalisatievoorkeuren, op te slaan in een in-memory opslag. Sommige teams slaan sessiestatus ook op in de cache, zodat stateful apps de toepassingslaag stateless kunnen houden. Voor operationele systemen zijn gegevens die weinig veranderen, zoals product- en prijsinformatie, een veelvoorkomend doel van opslaan in cache.
Een browsercache slaat kopieën van statische resources op het apparaat van een gebruiker op, zodat terugkerende bezoeken die bestanden opnieuw kunnen gebruiken in plaats van ze opnieuw te downloaden.
Server-side opslaan in cache vindt plaats in de processen die bedrijfsservices op afstand uitvoeren, in plaats van op het apparaat van de eindgebruiker. Server-side caches zijn vaak privé, lokaal voor één app-instantie, of gedeeld, gebruikt door meerdere app-instanties.
Een CDN slaat inhoud op in de cache op edge-servers dichter bij eindgebruikers, zodat aanvragen niet steeds terug hoeven naar de origin. In tegenstelling tot een browsercache, die voor één gebruiker is, is een CDN-cache gedeeld. De aanvraag van de ene gebruiker kan content vullen die een andere gebruiker later ontvangt.
Opslaan in cache is niet alleen een cloud-computing-patroon, hardware- en geheugenniveaus gebruiken het ook.
CPU-cache is een klein, snel geheugengebied dicht bij, of op, de processor dat kopieën opslaat van vaak gebruikte gegevens en instructies om de wachttijd op het hoofdgeheugen te verkorten.
Geheugen (in-memory) cache is het eenvoudigste type softwarecache: een in-memory opslag in de adresruimte van één proces, waar dat proces direct toegang toe heeft.
Een gedistribueerde cache strekt zich uit over meerdere servers, zodat de cache kan groeien en de transactionele capaciteit verder reikt dan één machine. Veel gedeelde cacheservices gebruiken een cluster van servers en verdelen in de cache opgeslagen gegevens over het cluster; de cache opschalen kan zo eenvoudig zijn als meer servers toevoegen. Sommige gedistribueerde ontwerpen gebruiken ook gelaagde caches, zodat een miss in één laag ophaalt bij een upstream provider en het resultaat daarna lokaal opslaat voor de volgende aanvraag.
Opslaan in cache houdt vaak geraadpleegde gegevens dichter bij waar je ze gebruikt, wat de responstijden kan verbeteren en een systeem kan helpen meer gelijktijdige aanvragen af te handelen. Het kan ook de belasting op de oorspronkelijke gegevensopslag verminderen, bijvoorbeeld wanneer een database maar een beperkt aantal verbindingen heeft.
In gedistribueerde toepassingen gebeurt opslaan in cache vaak op meer dan één plek, aan clientzijde (zoals in een browser) en aan serverzijde (in een applicatie of gedeelde cacheservice).
Begin klein en richt je op de gegevens die je het duidelijkste voordeel opleveren:
Een cache bevat meestal kopieën van gegevens uit een primaire opslag, dus versheid verdient aandacht:
Opslaan in cache is een belangrijk bouwblok voor moderne systemen, omdat het in veel architecturen past, van losse services tot gedistribueerde apps en edge-delivery. Voor een beheerde, in-memory cache cloudprovider kun je Azure verkennen.