From 6d578d016127db97d6f981ff18614ef52a2e0ede Mon Sep 17 00:00:00 2001 From: xxyy <cathay_xy@163.com> Date: 星期三, 05 三月 2025 17:19:01 +0800 Subject: [PATCH] 添加缓存服务及相关功能支持 --- Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 52 insertions(+), 0 deletions(-) diff --git a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs index 7dc8b26..1e38ec0 100644 --- a/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs +++ b/Code Management/WMS/WIDESEA_WMSServer/WIDESEA_WMSServer/Program.cs @@ -19,6 +19,13 @@ using WIDESEA_Core.Core; using Swashbuckle.AspNetCore.SwaggerGen; using Microsoft.OpenApi.Models; +using WIDESEA_StorageTaskServices; +using Autofac.Core; +using WIDESEA_Cache; +using SimpleRedis; +using WIDESEA_DTO.WMS; +using static NewLife.Remoting.ApiHttpClient; +using NewLife.Windows; var builder = WebApplication.CreateBuilder(args); @@ -109,8 +116,43 @@ } }); +builder.Services.AddHostedService<MyBackgroundService>(); + +//缓存设置配置转实体 +builder.Services.AddConfigurableOptions<CacheSettingsOptions>(); +//禁止在主机启动时通过 App.GetOptions<TOptions> 获取选项,如需获取配置选项理应通过 App.GetConfig<TOptions>("配置节点", true)。 +var cacheSettings = AppSettings.Configuration.GetSection("CacheSettings").Get<CacheSettingsOptions>(); +//如果有redis连接字符串 +if (cacheSettings.UseRedis) +{ + var connectionString = + $"server={cacheSettings.RedisSettings.Address};db={cacheSettings.RedisSettings.Db}"; + //注入redis + builder.Services.AddSimpleRedis(connectionString); + builder.Services.AddScoped<ISimpleCacheService, RedisCacheService>(); +} +else +{ + builder.Services.AddScoped<ISimpleCacheService, MemoryCacheService>(); +} + var app = builder.Build(); + +// 验证 Redis 服务是否成功注册 +using (var scope = app.Services.CreateScope()) +{ + var services = scope.ServiceProvider; + var redisService = services.GetService<ISimpleCacheService>(); + if (redisService == null) + { + WIDESEA_Core.Helper.ConsoleHelper.WriteErrorLine("Redis 服务未成功注册"); + } + else + { + WIDESEA_Core.Helper.ConsoleHelper.WriteSuccessLine("Redis 服务已成功注册"); + } +} // 3、配置中间件 app.UseMiniProfiler();//性能分析器 @@ -148,5 +190,15 @@ app.MapControllers(); +//通过 App.GetOptions<TOptions> 获取选项 +var cacheSettingsb = App.GetOptions<CacheSettingsOptions>(); +//如果需要清除缓存 +if (cacheSettingsb.UseRedis && cacheSettingsb.RedisSettings.ClearRedis) +{ + var redis = app.Services.CreateScope().ServiceProvider.GetService<ISimpleCacheService>(); //获取redis服务 + // 删除redis的key + redis.DelByPattern(CacheConst.Cache_Prefix); +} + app.Run(); -- Gitblit v1.9.3