IDistributedCache-abstraktio
Välimuistittakaa tietoja useilla palvelimilla.
IDistributedCache-abstraktio on ilmainen C# Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu C# Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. C# Academy-kurssilla on yhteensä 4 oppituntia.
Miksi hajautettua välimuistia käytetään
Muistinsisäinen välimuisti toimii yhden prosessin sisällä, joten sen sisältö menetetään uudelleenkäynnistyksen yhteydessä eikä sitä jaeta palvelinten kesken. Hajautettu välimuisti sijaitsee ulkoisessa tallennuspaikassa, kuten Redisissä, jota sovelluksen kaikki instanssit voivat lukea ja johon ne voivat kirjoittaa. Näin välimuisti pysyy yhdenmukaisena skaalatussa käyttöönotossa.
IDistributedCache-rajapinta
ASP.NET Core abstrahoi hajautetun välimuistin IDistributedCache-rajapinnan taakse paketissa Microsoft.Extensions.Caching.Distributed. Koodinne riippuu tästä rajapinnasta eikä suoraan Redisistä, joten voitte vaihtaa toteutusta.
public interface IDistributedCache
{
byte[] Get(string key);
Task<byte[]> GetAsync(string key, CancellationToken token = default);
void Set(string key, byte[] value, DistributedCacheEntryOptions options);
void Remove(string key);
void Refresh(string key);
}Se tallentaa tavuja
Huomatkaa, että välimuisti tallentaa byte[]-arvoja. Merkkijonot tai oliot on serialisoitava ensin, jotta ne voidaan tallentaa välimuistiin. Yleistä käyttötapausta varten on valmiita merkkijonojen laajennusmetodeja.
using Microsoft.Extensions.Caching.Distributed;
await cache.SetStringAsync("greeting", "Hello, world");
string value = await cache.GetStringAsync("greeting");Välimuistin injektointi
Pyytäkää IDistributedCache konstruktorin injektion avulla samalla tavalla kuin mikä tahansa palvelu.
public class WeatherService
{
private readonly IDistributedCache _cache;
public WeatherService(IDistributedCache cache)
{
_cache = cache;
}
}Välimuistista lukeminen
GetStringAsync palauttaa arvon null, kun avain puuttuu tai on vanhentunut. Käsitelkää välimuistihuti aina.
string cached = await _cache.GetStringAsync("forecast:istanbul");
if (cached is null)
{
// cache miss: load from source
}Välimuistiin kirjoittaminen
SetStringAsync tallentaa arvon valinnaisten vanhenemisasetusten kanssa. Käsittelemme nämä asetukset myöhemmässä oppitunnissa.
await _cache.SetStringAsync(
"forecast:istanbul",
"22C sunny",
new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(10)
});Poistaminen ja päivittäminen
RemoveAsync poistaa avaimen välimuistista esimerkiksi silloin, kun taustalla olevat tiedot muuttuvat. RefreshAsync aloittaa liukuvan vanhenemisajan uudelleen muuttamatta arvoa.
await _cache.RemoveAsync("forecast:istanbul");
await _cache.RefreshAsync("session:abc123");Muistinsisäinen toteutus
Kehitystä tai testejä varten rekisteröikää muistinsisäinen hajautettu välimuisti. Se toteuttaa saman rajapinnan, joten koodinne pysyy samana, mutta tietoja ei todellisuudessa jaeta prosessien välillä.
builder.Services.AddDistributedMemoryCache();Toteutusriippumaton koodi
Koska riippuvuus on vain IDistributedCache-rajapintaan, voitte vaihtaa muistinsisäisestä toteutuksesta Redisiin tai SQL Serveriin muuttamalla rekisteröintiä yhdellä rivillä ilman koodimuutoksia palveluihinne.
Avainten nimeämiskäytännöt
Käyttäkää jäsenneltyjä, nimiavaruudellisia avaimia, kuten entity:id:field (esimerkiksi user:42:profile). Selkeät käytännöt estävät törmäyksiä ja tekevät välimuistin invalidoinnista ennakoitavaa.
string key = $"user:{userId}:profile";Milloin välimuistia ei pidä käyttää
Välimuistittakaa tietoja, joita luetaan usein ja jotka muuttuvat harvoin. Hyvin nopeasti muuttuvat tai käyttäjäkohtaiset arkaluonteiset tiedot eivät välttämättä sovi välimuistiin, ja vanhentuneiden tietojen riskit on aina punnittava suhteessa suorituskykyhyötyihin.
Pikatarkistus
Testatkaa IDistributedCache-abstraktio.
Kertaus
IDistributedCache abstrahoi ulkoisen, jaetun välimuistin, joten jokainen sovellusinstanssi näkee samat tiedot. Välimuisti tallentaa byte[]-arvoja, ja merkkijonoja varten on käytettävissä GetStringAsync/SetStringAsync sekä RemoveAsync ja RefreshAsync. Rajapintaan riippuminen pitää koodin toteutusriippumattomana, ja toteutuksen voi vaihtaa AddDistributedMemoryCache-toteutuksen ja Redisin välillä yhdellä rivillä. Käyttäkää selkeitä nimiavaruudellisia avaimia.
Opi C# tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 93
- Oppitunnit
- 346
Usein kysytyt kysymykset
Onko oppitunti ”IDistributedCache-abstraktio” ilmainen?
Kyllä – oppitunnin ”IDistributedCache-abstraktio” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko C# Academy-kurssin, päivitä CoddyKit PROhon. C# Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”IDistributedCache-abstraktio”?
Välimuistittakaa tietoja useilla palvelimilla. Harjoittelet C# Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni C# Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin C# Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”IDistributedCache-abstraktio”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä C# Academy-oppitunnilla?
Kyllä. Jokainen C# Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- IDistributedCache-abstraktio
- Yhdistäminen Redisiin
- Välimuistimallit ja vanheneminen
- Sarjallistettujen olioiden välimuistitus