Použití distribuované mezipaměti Redis
V aplikaci nativní pro cloud vytvářejí samostatné týmy mikroslužby s jejich upřednostňovanými technologiemi podle vlastních plánů. Mikroslužby obvykle fungují zcela nezávisle. Můžou mít prospěch z ukládání do mezipaměti, ale pokud spouští samostatné mezipaměti, nemusí si uvědomit optimální zlepšení výkonu. Pokud zadáte jednu mezipaměť pro více mikroslužeb, mohou tyto služby načítat informace z mezipaměti uložené jinou mikroslužbou.
Představte si, že pracujete pro prodejce venkovního vybavení. Rozhodli jste se implementovat ukládání do mezipaměti pomocí serveru Redis v mikroslužbě nákupního košíku. Chcete ale také zajistit, aby ostatní mikroslužby mohly těžit z informací, které ukládáte do mezipaměti.
V této lekci se dozvíte, jak distribuovaná mezipaměť Redis dokáže optimalizovat výkon pro více mikroslužeb ve vaší aplikaci. Uvidíte také, jak rozhraní .NET Aspire usnadňuje implementaci distribuované mezipaměti.
Co je distribuované ukládání do mezipaměti?
Distribuovaná mezipaměť je sdílená mezi několika volajícími službami. V aplikaci nativní pro cloud jsou volající služby obvykle mikroslužby. Při ukládání některých informací, například podrobností o oblíbeném produktu v katalogu, v distribuované mezipaměti můžou všechny mikroslužby ve vaší aplikaci potenciálně využívat a získat z vylepšení výkonu.
Nastavení distribuované mezipaměti v .NET Aspire
Pokud chcete používat distribuované ukládání do mezipaměti, vyžadují se změny v hostitelském projektu aplikace i v mikroslužbách, které mezipaměť používají.
Konfigurace hostitele aplikace
V hostitelském projektu aplikace vašeho řešení začněte instalací komponenty hostování distribuované mezipaměti:
dotnet add package Aspire.Hosting.Redis --prerelease
Případně můžete pomocí zástupce Přidat > komponentu .NET Aspire v sadě Visual Studio nainstalovat komponentu ze správce balíčků NuGet:
Po instalaci hostitelské komponenty zaregistruje kód v souboru hostitele aplikace Program.cs mezipaměť a předá ji do projektů, které mezipaměť používají:
// Register the cache
var redis = builder.AddRedis("redis");
// Initiate the consuming project and pass the cache
builder.AddProject<Projects.ConsumingProject>()
.WithReference(redis);
Konfigurace náročných projektů
Pokud chcete nainstalovat komponentu .NET Aspire Distributed Cache do mikroslužby, použijte příkaz podobný tomuto v projektech .NET Aspire:
dotnet add package Aspire.StackExchange.Redis.DistributedCache --prerelease
Znovu můžete použít správce balíčků NuGet k instalaci komponenty:
Použití distribuované mezipaměti
V jakémkoli projektu, ve kterém chcete mezipaměť používat, musíte získat objekt distribuované mezipaměti, který představuje připojení k Redis. V souboru Program.cs tento kód zaregistruje distribuovanou mezipaměť:
builder.AddRedisDistributedCache("cache")
Jakmile je mezipaměť zaregistrovaná v náročném projektu, můžete distribuovanou mezipaměť načíst kdykoliv, když ji potřebujete, pomocí injektáže závislostí:
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) }
);
}
}
}
Konfigurace
Aby se mikroslužby připojily k distribuované mezipaměti Redis, musíte jim sdělit, kde je, tím, že poskytují připojovací řetězec. Výše uvedené volání AddRedisDistributedCache()
metody zadané připojovací řetězec volal redis
.
ConnectionStrings
Ke konfiguraci připojovací řetězec použijte oddíl v konfiguračním souboru, například v appsettings.json:
{
"ConnectionStrings": {
"redis": "redis.contoso.com:6379"
}
}
Můžete také použít appsettings.json ke konfiguraci chování distribuované součásti ukládání do mezipaměti. Tento kód například nakonfiguruje vypršení časového limitu připojení po pěti sekundách a třikrát zopakuje:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConfigurationOptions": {
"ConnectTimeout": 5000,
"ConnectRetry": 3
}
}
}
}
}
Připojení můžete také nakonfigurovat pomocí vložených delegátů v AddRedisDistributedCache()
metodě. Tento kód konfiguruje stejné vlastnosti jako v předchozím příkladu JSON:
builder.AddRedisDistributedCache(
"redis",
configureOptions: options => options.ConnectTimeout = 5000
);