Programovanie

Ako používať ukladanie do pamäte cache v ASP.NET Core

ASP.NET Core je štíhly a modulárny rámec, ktorý možno použiť na vytváranie vysoko výkonných moderných webových aplikácií v systémoch Windows, Linux alebo MacOS. Na rozdiel od staršieho ASP.NET nemá ASP.NET Core a Cache objekt. ASP.NET Core však poskytuje podporu pre niekoľko rôznych typov ukladania do pamäte cache vrátane ukladania do pamäte cache, distribuovaného ukladania do vyrovnávacej pamäte a ukladania do vyrovnávacej pamäte odpovedí.

V tomto článku sa pozrieme na to, ako môžete zvýšiť výkon a škálovateľnosť svojej aplikácie ASP.NET Core ukladaním zriedkavo meniacich sa údajov do medzipamäte v pamäti. Ako vždy, uvediem príklady kódu na ilustráciu diskutovaných konceptov.

Ako povoliť ukladanie do pamäte cache v ASP.NET Core

Medzipamäť v pamäti v ASP.NET Core je služba, ktorú môžete začleniť do svojej aplikácie pomocou vkladania závislostí. Po vytvorení projektu ASP.NET Core v Visual Studio môžete povoliť medzipamäť v pamäti Konfigurovať služby metóda v Začiatok triedy, ako je uvedené v útržku kódu nižšie.

public void ConfigureServices (služby IServiceCollection)

{

services.AddMvc ();

services.AddMemoryCache ();

}

Ak chcete pracovať s medzipamäťou v pamäti v ASP.NET Core, musíte použiť IMemoryCache rozhranie. Vyzerá to takto:

verejné rozhranie IMemoryCache: IDisposable

{

bool TryGetValue (kľúč objektu, hodnota out objektu);

ICacheEntry CreateEntry (kľúč objektu);

void Remove (kľúč objektu);

}

Môžete sa zaregistrovať IMemoryCache vConfigServices metóda využívajúca AddMemoryCache metóda, ktorú sme skúmali vyššie. Potom by ste mali vložiť objekt medzipamäte do konštruktora vašej triedy ovládačov, ako je znázornené v útržku kódu nižšie.

  súkromná medzipamäť IMemoryCache;

verejná CacheController (medzipamäť IMemoryCache)

        {

this.cache = cache;

        }

A to je všetko, čo musíte urobiť, aby ste vo svojej aplikácii ASP.NET Core nastavili podporu pre ukladanie do pamäte cache. V nasledujúcej časti sa pozrieme na to, ako môžeme pracovať s cache API v ASP.NET Core na ukladanie a načítanie objektov.

Ako ukladať a načítať objekty pomocou technológie ASP.NET Core IMemoryCache

Na uloženie objektu pomocou IMemoryCache musíte použiť rozhranie Sada () uvedenou v útržku kódu nižšie. Upozorňujeme, že verzia Sada () metóda, ktorú sme použili v tomto príklade, akceptuje dva parametre. Prvý parameter je názov kľúča a druhým parametrom je hodnota, t. J. Objekt, ktorý sa má uložiť do medzipamäte a ktorý je možné identifikovať pomocou kľúča.

[HttpGet]

verejný reťazec Get ()

        {

cache.Set („Kľúč“, DateTime.Now.ToString ());

návrat „Toto je testovacia metóda ...“;

        }

Na načítanie položky z medzipamäte môžete využiť Získať () metóda uvedená nižšie.

  [HttpGet („{key}“)]

public string Get (reťazcový kľúč)

        {

vrátiť cache.Get (kľúč);

        }

Môžete použiť TryGet () metóda na objekte medzipamäte, aby sa skontrolovalo, či existuje zadaný kľúč v pamäti cache. Tu je upravená verzia nášho Získajte metóda, ktorá ilustruje, ako sa to dá dosiahnuť.

 [HttpGet]

verejný reťazec Get ()

        {

reťazcový kľúč;

string obj;

if (! cache.TryGetValue (kľúč, von obj))

            {

obj = DateTime.Now.ToString ();

cache.Set (key, obj);

            }

návrat obj;

        }

Existuje ešte jedna metóda, tzv GetOrCreate, ktoré možno použiť na načítanie údajov z medzipamäte na základe poskytnutého kľúča. Ak kľúč neexistuje, metóda ho vytvorí.

[HttpGet]

verejný reťazec Get ()

        {

vrátiť cache.GetOrCreate („kľúč“,

cacheEntry => {

vrátiť DateTime.Now.ToString ();

                         });

        }

Upozorňujeme, že je k dispozícii asynchrónna verzia tejto metódy s názvom GetOrCreateAsync. Tu je kompletný zoznam našich kódov CacheController triedy pre vašu referenciu.

pomocou systému;

pomocou Microsoft.AspNetCore.Mvc;

pomocou Microsoft.Extensions.Caching.Memory;

menný priestor InMemoryCaching.Controlers

{

[Route („api / [controller]“)]]

verejná trieda CacheController: radič

    {

súkromná medzipamäť IMemoryCache;

verejná CacheController (medzipamäť IMemoryCache)

        {

this.cache = cache;

        }

[HttpGet]

verejný reťazec Get ()

        {

vrátiť cache.GetOrCreate („kľúč“,

cacheEntry => {

vrátiť DateTime.Now.ToString ();

                         });

        }

    }

}

Ako nastaviť zásady vypršania platnosti pre dáta v pamäti cache v ASP.NET Core

Upozorňujeme, že pre svoje dáta v pamäti môžete nastaviť absolútne a posuvné pravidlá uplynutia platnosti. Zatiaľ čo prvé sa používa na určenie doby, po ktorú by sa mal objekt nachádzať v pamäti cache, druhé sa používa na určenie doby, po ktorú bude objekt ležať v pamäti, keď nie je vykonaná žiadna aktivita - tj. Položka bude odstránená z cache, keď uplynie zadané trvanie nečinnosti.

Na nastavenie pravidiel uplynutia platnosti používate MemoryCacheEntryOptions triedy, ako je uvedené v útržku kódu nižšie.

MemoryCacheEntryOptions cacheExpirationOptions = nový MemoryCacheEntryOptions ();

cacheExpirationOptions.AbsoluteExpiration = DateTime.Now.AddMinutes (30);

cacheExpirationOptions.Priority = CacheItemPriority.Normal;

cache.Set („Kľúč“, DateTime.Now.ToString (), cacheExpirationOptions);

Všimnite si použitie Priorita majetok na MemoryCacheEntryOptions napríklad v útržku kódu vyššie. The Priorita vlastnosť určuje, ktoré objekty (na základe už nastavenej priority) by mali byť odstránené z medzipamäte ako súčasť stratégie runtime na získanie pamäte, kedykoľvek dôjde webovému serveru k nedostatku pamäte.

Na nastavenie priority sme použili CacheItemPriority enum. Môže to mať jednu z týchto možných hodnôt: Nízka, Normálna, Vysoká a NeverRemove. Poskytovateľ medzipamäte v pamäti v ASP.NET Core odstráni položky medzipamäte, keď je pod tlakom pamäte, pokiaľ nemáte nastavenú prioritu medzipamäte CacheItemPriority.NeverRemove.

Možno budete tiež chcieť zaregistrovať spätné volanie, ktoré sa vykoná vždy, keď je položka odstránená z medzipamäte. Nasledujúci úryvok kódu ilustruje, ako je to možné dosiahnuť.

cacheExpirationOptions.RegisterPostEvictionCallback

(CacheItemChangedHandler, toto);

Môžete dokonca nastaviť závislosti medzi objektmi vo vyrovnávacej pamäti. Napríklad môžete odstrániť niektoré položky z medzipamäte, ak boli odstránené niektoré súvisiace položky. Túto a ďalšie mnoho ďalších funkcií ukladania do pamäte cache v ASP.NET Core preskúmame v mojich budúcich príspevkoch tu. Do tej doby si možno budete chcieť pozrieť príslušné stránky v dokumentácii ASP.NET Core spoločnosti Microsoft.

Ako urobiť viac v ASP.NET a ASP.NET Core:

  • Ako používať ukladanie do pamäte cache v ASP.NET Core
  • Ako spracovať chyby v webovom rozhraní API ASP.NET
  • Ako odovzdať viaceré parametre metódam radiča webového API
  • Ako prihlásiť metadáta požiadaviek a odpovedí do webového rozhrania ASP.NET Web API
  • Ako pracovať s HttpModules v ASP.NET
  • Pokročilé spravovanie verzií v webovom rozhraní API ASP.NET Core
  • Ako používať vkladanie závislostí v ASP.NET Core
  • Ako pracovať s reláciami v ASP.NET
  • Ako pracovať s HTTPHandlers v ASP.NET
  • Ako používať IHostedService v ASP.NET Core
  • Ako spotrebovať službu WCF SOAP v ASP.NET Core
  • Ako zlepšiť výkon aplikácií ASP.NET Core
  • Ako konzumovať webové rozhranie API ASP.NET Core pomocou nástroja RestSharp
  • Ako pracovať s prihlásením do ASP.NET Core
  • Ako používať MediatR v ASP.NET Core
  • Ako pracovať so stavom relácie v ASP.NET Core
  • Ako používať Nancy v ASP.NET Core
  • Pochopte väzbu parametrov vo webovom rozhraní API ASP.NET
  • Ako nahrávať súbory v ASP.NET Core MVC
  • Ako implementovať globálne spracovanie výnimiek v webovom rozhraní API ASP.NET Core
  • Ako implementovať kontroly stavu v ASP.NET Core
  • Najlepšie postupy pri ukladaní do pamäte cache v ASP.NET
  • Ako používať zasielanie správ Apache Kafka v .NET
  • Ako povoliť CORS vo vašom webovom rozhraní API
  • Kedy použiť WebClient vs. HttpClient vs. HttpWebRequest
  • Ako pracovať s Redis Cache v .NET
  • Kedy použiť Task.WaitAll vs. Task.WhenAll v .NET
$config[zx-auto] not found$config[zx-overlay] not found