Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Data-API Builder som länge stöds nivå 1 (L1) minnesintern cache och cacherelaterade HTTP-begärandehuvuden som no-store, no-cacheoch only-if-cached för att påverka cachebeteendet.
Cachelagring på nivå 2 (L2) utökar cachelagringen utöver den lokala processen genom att lägga till ett distribuerat cachelager. Med L2kan cachelagrade resultat återanvändas över flera DAB-instanser och kan överleva enskilda omstarter av containrar, vilket gör att tillståndslösa distributioner känns mindre tillståndslösa på alla rätt sätt.
Fördelar med cachelagring på nivå 2
Använd cacheminnet på nivå 2 när du vill:
- Dela cachelagrade resultat över utskalade DAB-instanser
- Minska databasens rundresor för upprepade läsningar
- Håll tillståndslösa containrar varma efter återanvändning eller omdistribuering
- Förbättra prestanda för läsintensiva arbetsbelastningar
- Deltagande i namnområdescache med partitioner
Konfigurera inställningar för körningscachen
Nivå 2-cache konfigureras globalt under runtime.cache. Blockering av körningscachen möjliggör cachelagring, anger standardtiden till live (TTL) och konfigurerar den distribuerade cacheprovidern.
{
"runtime": {
"cache": {
"enabled": true,
"ttl-seconds": 30,
"level-2": {
"enabled": true,
"provider": "redis",
"connection-string": "localhost:6379",
"partition": "prod-api"
}
}
}
}
Körningsegenskaper
| Fastighet | Beskrivning |
|---|---|
enabled |
Aktiverar cachestöd globalt. |
ttl-seconds |
Anger standardtiden för cachen i sekunder. |
level-2.enabled |
Aktiverar den distribuerade cachenivån. |
level-2.provider |
Väljer den distribuerade cacheprovidern. Stöds för närvarande redis . |
level-2.connection-string |
Anslutningssträng för Redis-instansen. |
level-2.partition |
Valfritt namnområde för Redis-nycklar och backplanskanalen. Endast containrar som använder samma partition delar samma distribuerade cacheutrymme. |
Konfigurera entitetsspecifikt cachebeteende
Entiteter kan åsidosätta det globala cachebeteendet. Använd entitetsblocket cache för att aktivera cachelagring, ange en anpassad TTL och välj cachenivå.
{
"entities": {
"Products": {
"source": "dbo.Products",
"cache": { "enabled": true, "ttl-seconds": 120, "level": "L1L2" }
},
"Orders": {
"source": "dbo.Orders",
"cache": { "enabled": true, "level": "L1" }
}
}
}
Egenskapen cache.level
Använd cache.level för att styra vilka cachenivåer en entitet använder.
| Värde | Beskrivning |
|---|---|
L1 |
Endast minnesintern cache. Snabb och lokal för den aktuella DAB-processen. |
L1L2 |
Minnesinternt plus distribuerad cache. Den här nivån är standardvärdet för cachelagrade entiteter. |
Om L2 inte är aktiverat globalt fungerar en entitet som konfigurerats med L1L2 som L1.
Så här fungerar L1L2
Tips/Råd
TL; DRL1L2 = Begär → L1 → L2 → databas → L2 → L1 → Response
Som standard använder en entitet med cachelagring aktiverat nivå L1L2.
-
L1är cacheminnet per process i minnet. -
L2är det distribuerade cachelagret, för närvarande Redis, plus ett backplan för enhetlighet mellan instanser.
Med L1L2 utför en cachesökning först en kontroll av L1. Vid en L1 miss kontrollerar L2 den om cachelagring på nivå 2 är globalt aktiverad och konfigurerad. Om posten inte hittas i något av skikten kör DAB databasfrågan. Resultatet lagras sedan i både L1 och L2.
Det innebär:
- Framtida begäranden på samma instans hanteras från lokala
L1 - Begäranden om andra instanser kan läsa från
L2och höja upp posten till sina egnaL1 - Om en container startas om kan en
L1miss följt av enL2träff fortfarande undvika en databasresa
Den här kombinationen ger dig en varm distribuerad cache över utskalade eller återvunna instanser.
Stöd för Redis
Redis är den aktuella providern för cachelagring på nivå 2. Det passar bra för det här scenariot eftersom det stöder:
- Delad åtkomst över flera DAB-instanser
- Nyckelförfallodatum för TTL-baserad cachelagring
- Snabba läsningar och skrivningar för arbetsbelastningar med högt dataflöde
- Koordinering av backplan mellan instanser
Partitionerade cacheutrymmen
Använd den valfria partition inställningen för att isolera distribuerad cacheaktivitet. DAB använder partitionsvärdet för namnområdet Redis-nycklar och backplanskanalen. Endast containrar som delar samma partition deltar i samma distribuerade cacheutrymme.
Den här inställningen är användbar när du vill:
- Separera produktions- och icke-produktionstrafik
- Isolera klientorganisationer eller miljöer
- Förhindra att orelaterade tjänster delar cachelagrade poster