Szukaj…


Wprowadzenie

Buforowanie pomaga poprawić wydajność aplikacji poprzez utrzymanie łatwo dostępnej kopii danych. Aspnet Core zawiera dwie łatwe w użyciu i testujące przyjazne abstrakcje buforowania.

Pamięć podręczna będzie przechowywać dane w pamięci podręcznej lokalnego serwera.

Rozproszona pamięć podręczna przechowuje pamięć podręczną danych w scentralizowanej lokalizacji, do której dostęp mają serwery w klastrze. Jest dostarczany z trzema implementacjami od razu po wyjęciu z pudełka: In Memory (do testowania jednostkowego i lokalnego tworzenia), Redis i Sql Server.

Korzystanie z pamięci podręcznej InMemory w aplikacji ASP.NET Core

Aby użyć pamięci podręcznej w aplikacji ASP.NET, dodaj następujące zależności do pliku project.json :

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

dodaj usługę pamięci podręcznej (z Microsoft.Extensions.Caching.Memory) do metody ConfigureServices w klasie Autostart

services.AddMemoryCache();

Aby dodać elementy do pamięci podręcznej w naszej aplikacji, użyjemy IMemoryCache który można wstrzyknąć do dowolnej klasy (na przykład kontrolera), jak pokazano poniżej.

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

Get zwróci wartość, jeśli istnieje, ale w przeciwnym razie zwróci 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))

Użyj metody Set , aby zapisać w pamięci podręcznej. Zestaw akceptuje klucz używany do wyszukiwania wartości, wartość do buforowania oraz zestaw MemoryCacheEntryOptions . MemoryCacheEntryOptions umożliwia określenie bezwzględnego lub przesuwnego wygaśnięcia pamięci podręcznej, priorytetu buforowania, wywołań zwrotnych i zależności. Jedna z poniższych próbek

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

Rozproszone buforowanie

Aby wykorzystać rozproszoną pamięć podręczną, musisz odwołać się do jednej z dostępnych implementacji:

Na przykład zarejestrujesz implementację Redis w następujący sposób:

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

Wymagaj zależności IDistributedCache tam, gdzie jej potrzebujesz:

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow