Suche…


Einführung

Die Zwischenspeicherung trägt zur Verbesserung der Leistung einer Anwendung bei, indem eine leicht zugängliche Kopie der Daten beibehalten wird. Aspnet Core wird mit zwei benutzerfreundlichen und testfähigen Caching-Abstraktionen geliefert .

Im Speichercache werden Daten im Cache des lokalen Servers gespeichert.

Der verteilte Cache speichert den Datencache an einem zentralen Ort, auf den Server im Cluster zugreifen können. Es werden standardmäßig drei Implementierungen geliefert: In Memory (für Unit-Tests und lokales Gerät), Redis und SQL Server.

InMemory-Cache in ASP.NET Core-Anwendung verwenden

project.json Ihrer project.json Datei die folgenden Abhängigkeiten hinzu, um einen Cache-Speicher in Ihrer ASP.NET-Anwendung zu verwenden:

  "Microsoft.Extensions.Caching.Memory": "1.0.0-rc2-final",

Fügen Sie den Cache-Dienst (von Microsoft.Extensions.Caching.Memory) zur ConfigureServices-Methode in der Startklasse hinzu

services.AddMemoryCache();

Um dem Cache Elemente in unserer Anwendung hinzuzufügen, verwenden wir IMemoryCache der wie unten gezeigt in jede Klasse (z. B. Controller) IMemoryCache kann.

private IMemoryCache _memoryCache;
public HomeController(IMemoryCache memoryCache)
{
    _memoryCache = memoryCache;
}

Get gibt den Wert zurück, wenn er existiert, ansonsten aber null .

    // try to get the cached item; null if not found
    // greeting = _memoryCache.Get(cacheKey) as string;

    // alternately, TryGet returns true if the cache entry was found
    if(!_memoryCache.TryGetValue(cacheKey, out greeting))

Verwenden Sie die Set- Methode, um in den Cache zu schreiben. Set akzeptiert den Schlüssel, mit dem der Wert, der zwischengespeicherte Wert und eine Reihe von MemoryCacheEntryOptions . Mit den MemoryCacheEntryOptions können Sie den absoluten oder gleitenden zeitabhängigen Cache-Ablauf, die Zwischenspeicherungspriorität, Rückrufe und Abhängigkeiten angeben. Eines der Beispiele unten-

_memoryCache.Set(cacheKey, greeting,
                new MemoryCacheEntryOptions()
                .SetAbsoluteExpiration(TimeSpan.FromMinutes(1)));

Verteiltes Caching

Um den verteilten Cache zu nutzen, müssen Sie auf eine der verfügbaren Implementierungen verweisen:

Beispielsweise registrieren Sie die Implementierung von Redis wie folgt:

public void ConfigureServices(IServiceCollection services)
{
    services.AddDistributedRedisCache(options =>
    {
        options.Configuration = "ServerAdress";
        options.InstanceName = "InstanceName";
    });
}

IDistributedCache Sie die IDistributedCache Abhängigkeit dort an, wo Sie sie benötigen:

public class BooksController {
    private IDistributedCache distributedCache;

    public BooksController(IDistributedCache distributedCache) {
        this.distributedCache = distributedCache;
    }

    [HttpGet]
    public async Task<Books[]> GetAllBooks() {
        var serialized = this.distributedCache.GetStringAsync($"allbooks");
        Books[] books = null;
        if (string.IsNullOrEmpty(serialized)) {
            books = await Books.FetchAllAsync();
            this.distributedCache.SetStringAsync($"allbooks", JsonConvert.SerializeObject(books));
        } else {
            books = JsonConvert.DeserializeObject<Books[]>(serialized);
        }
        return books;
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow