Review cache con FusionCache

This commit is contained in:
Samuele Locatelli
2026-05-27 08:51:30 +02:00
parent 20a16471a9
commit 9e4594f8b4
9 changed files with 397 additions and 101 deletions
+21 -3
View File
@@ -1,5 +1,6 @@
using Microsoft.AspNetCore.Authentication.Negotiate;
using Microsoft.AspNetCore.StaticFiles;
using Microsoft.Extensions.Caching.Distributed;
using Microsoft.Extensions.FileProviders;
using MP.AppAuth.Services;
using MP.Data.Services;
@@ -12,7 +13,9 @@ using NLog.Web;
using OpenTelemetry.Resources;
using OpenTelemetry.Trace;
using StackExchange.Redis;
using ZiggyCreatures.Caching.Fusion;
using ZiggyCreatures.Caching.Fusion.Backplane.StackExchangeRedis;
using ZiggyCreatures.Caching.Fusion.Serialization.NewtonsoftJson;
var builder = WebApplication.CreateBuilder(args);
@@ -30,7 +33,7 @@ string connStringRedis = configuration.GetConnectionString("Redis") ?? "localhos
//string connStringRedis = ConfMan.GetConnectionString("RedisAdmin");
string redisSrvAddr = connStringRedis.Substring(0, connStringRedis.IndexOf(":"));
// avvio oggetto shared x redis...
var redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis);
IConnectionMultiplexer redisMultiplexer = ConnectionMultiplexer.Connect(connStringRedis);
// ====================================================================
@@ -135,9 +138,24 @@ builder.Services.AddRazorComponents()
builder.Services.AddRazorPages();
// memory + redis preliminare
builder.Services.AddMemoryCache();
builder.Services.AddSingleton<IConnectionMultiplexer>(redisMultiplexer);
// ✅ Distributed cache (necessario per FusionCache)
builder.Services.AddStackExchangeRedisCache(options =>
{
options.Configuration = connStringRedis;
});
// ✅ FusionCache
builder.Services.AddFusionCache()
.WithDistributedCache(sp => sp.GetRequiredService<IDistributedCache>())
.WithSerializer(new FusionCacheNewtonsoftJsonSerializer())
.WithBackplane(new RedisBackplane(new RedisBackplaneOptions
{
ConnectionMultiplexerFactory = () => Task.FromResult(redisMultiplexer)
}));
// altri servizi
builder.Services.AddSingleton<MpDataService>();
builder.Services.AddSingleton<ListSelectDataSrv>();