Używanie rozproszonej pamięci podręcznej Redis
W aplikacji natywnej dla chmury oddzielne zespoły tworzą mikrousługi przy użyciu preferowanych technologii we własnych harmonogramach. Mikrousługi zwykle działają całkowicie niezależnie. Mogą one korzystać z buforowania, ale jeśli uruchamiają oddzielne pamięci podręczne, mogą nie być w stanie zrealizować optymalnej poprawy wydajności. Jeśli udostępniasz jedną pamięć podręczną dla wielu mikrousług, te usługi mogą pobierać informacje z pamięci podręcznej przechowywanej przez inną mikrousługę.
Wyobraź sobie, że pracujesz dla sprzedawcy sprzętu zewnętrznego. Podjęto decyzję o zaimplementowaniu buforowania przy użyciu serwera Redis w mikrousłudze koszyka zakupów. Jednak chcesz również upewnić się, że inne mikrousługi mogą korzystać z informacji przechowywanych w pamięci podręcznej.
W tej lekcji dowiesz się, jak rozproszona pamięć podręczna Redis cache może zoptymalizować wydajność wielu mikrousług w aplikacji. Zobaczysz również, jak platforma .NET Aspire ułatwia implementowanie rozproszonej pamięci podręcznej.
Co to jest rozproszone buforowanie?
Rozproszona pamięć podręczna to pamięć podręczna współdzielona między kilkoma usługami wywołującym. W aplikacji natywnej dla chmury usługi wywołujące są zwykle mikrousługami. W przypadku przechowywania niektórych informacji, na przykład szczegółów popularnego produktu w katalogu, w rozproszonej pamięci podręcznej wszystkie mikrousługi w aplikacji mogą potencjalnie jej używać i uzyskiwać od poprawy wydajności.
Konfigurowanie rozproszonego buforowania na platformie .NET Aspire
Aby korzystać z buforowania rozproszonego, zmiany są wymagane zarówno w projekcie hosta aplikacji, jak i w mikrousługach korzystających z pamięci podręcznej.
Konfigurowanie hosta aplikacji
W projekcie hosta aplikacji rozwiązania rozpocznij od zainstalowania rozproszonego składnika hostingu buforowania:
dotnet add package Aspire.Hosting.Redis --prerelease
Alternatywnie możesz użyć skrótu Dodaj > składnik aspirujący platformy .NET w programie Visual Studio, aby zainstalować składnik z menedżera pakietów NuGet:
Po zainstalowaniu składnika hostingu kod w pliku Program.cs hosta aplikacji rejestruje pamięć podręczną i przekazuje go do projektów korzystających z pamięci podręcznej:
// Register the cache
var redis = builder.AddRedis("redis");
// Initiate the consuming project and pass the cache
builder.AddProject<Projects.ConsumingProject>()
.WithReference(redis);
Konfigurowanie projektów zużywających
Aby zainstalować składnik rozproszonej pamięci podręcznej .NET Aspire w mikrousłudze, użyj polecenia takiego jak ten w projektach programu .NET Aspire:
dotnet add package Aspire.StackExchange.Redis.DistributedCache --prerelease
Możesz też użyć menedżera pakietów NuGet do zainstalowania składnika:
Używanie rozproszonej pamięci podręcznej
W każdym projekcie, w którym chcesz używać pamięci podręcznej, należy uzyskać obiekt rozproszonej pamięci podręcznej, który reprezentuje połączenie z usługą Redis. W pliku Program.cs ten kod rejestruje rozproszoną pamięć podręczną:
builder.AddRedisDistributedCache("cache")
Po zarejestrowaniu pamięci podręcznej w projekcie korzystającym z niego można pobrać rozproszoną pamięć podręczną w dowolnym momencie, używając iniekcji zależności:
public class MyService(IDistributedCache cache)
{
public async Task InitializeAsync()
{
// Check if there is cached content
var cachedInfo = await cache.GetAsync("myinfo")
if (cachedInfo is null)
{
// There's no content in the cache so formulate it here
// For example, query databases.
// Store the content in the cache
await cache.SetAsync("myinfo", cachedInformation, new()
{ AbsoluteExpiration = DateTime.Now.AddSeconds(60) }
);
}
}
}
Konfigurowanie
Aby mikrousługi łączyły się z rozproszoną pamięcią podręczną Redis, należy poinformować ich, gdzie jest, podając parametry połączenia. Powyższe wywołanie metody AddRedisDistributedCache()
określonej parametry połączenia o nazwie redis
.
ConnectionStrings
Użyj sekcji w pliku konfiguracji, na przykład w appsettings.json, aby skonfigurować parametry połączenia:
{
"ConnectionStrings": {
"redis": "redis.contoso.com:6379"
}
}
Można również użyć appsettings.json , aby skonfigurować zachowanie rozproszonego składnika buforowania. Na przykład ten kod konfiguruje połączenie w celu przekroczenia limitu czasu po pięciu sekundach i ponawia próbę trzy razy:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConfigurationOptions": {
"ConnectTimeout": 5000,
"ConnectRetry": 3
}
}
}
}
}
Możesz również skonfigurować połączenie przy użyciu delegatów wbudowanych w metodzie AddRedisDistributedCache()
. Ten kod konfiguruje te same właściwości co poprzedni przykład JSON:
builder.AddRedisDistributedCache(
"redis",
configureOptions: options => options.ConnectTimeout = 5000
);