重写SqlSugar二级缓存模糊删除缓存方法覆盖ICacheService实现类SqlSugarCache中的GetAllKey和Remove方法解决是否含有key前缀不一致问题,ipratelimit接入分布式缓存
This commit is contained in:
parent
c592925096
commit
e7fe909fd0
@ -1,8 +1,7 @@
|
||||
using CSRedis;
|
||||
using Infrastructure;
|
||||
using Microsoft.Extensions.Caching.Distributed;
|
||||
|
||||
namespace ZR.Common.Cache
|
||||
namespace ZR.Infrastructure.Cache
|
||||
{
|
||||
public class RedisServer
|
||||
{
|
||||
@ -13,7 +12,7 @@ namespace ZR.Common.Cache
|
||||
{
|
||||
Cache = new CSRedisClient(AppSettings.GetConfig("RedisServer:Cache"));
|
||||
Session = new CSRedisClient(AppSettings.GetConfig("RedisServer:Session"));
|
||||
RedisHelper.Initialization(Cache);
|
||||
RedisHelper.Initialization(Session);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -17,8 +17,8 @@ namespace ZR.Infrastructure.WebExtensions
|
||||
//从appsettings.json中加载Ip规则
|
||||
services.Configure<IpRateLimitPolicies>(configuration.GetSection("IpRateLimitPolicies"));
|
||||
//注入计数器和规则存储
|
||||
services.AddSingleton<IIpPolicyStore, MemoryCacheIpPolicyStore>();
|
||||
services.AddSingleton<IRateLimitCounterStore, MemoryCacheRateLimitCounterStore>();
|
||||
services.AddSingleton<IIpPolicyStore, DistributedCacheIpPolicyStore>();
|
||||
services.AddSingleton<IRateLimitCounterStore, DistributedCacheRateLimitCounterStore>();
|
||||
//配置(解析器、计数器密钥生成器)
|
||||
services.AddSingleton<IRateLimitConfiguration, RateLimitConfiguration>();
|
||||
services.AddSingleton<IProcessingStrategy, AsyncKeyLockProcessingStrategy>();
|
||||
|
||||
@ -1,4 +1,3 @@
|
||||
using System.Reflection;
|
||||
using AspNetCoreRateLimit;
|
||||
using Infrastructure.Converter;
|
||||
using Microsoft.AspNetCore.DataProtection;
|
||||
@ -8,9 +7,8 @@ using Microsoft.Extensions.Caching.Distributed;
|
||||
using Microsoft.Extensions.Caching.Redis;
|
||||
using Microsoft.Extensions.Options;
|
||||
using Newtonsoft.Json;
|
||||
using Quartz;
|
||||
using ZR.Admin.WebApi.Extensions;
|
||||
using ZR.Common.Cache;
|
||||
using ZR.Infrastructure.Cache;
|
||||
using ZR.Infrastructure.Resolver;
|
||||
using ZR.Infrastructure.WebExtensions;
|
||||
using ZR.ServiceCore.Model;
|
||||
|
||||
@ -12,6 +12,6 @@
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="JinianNet.JNTemplate" Version="2.3.3" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.105" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.109" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
<ItemGroup>
|
||||
<PackageReference Include="MiniExcel" Version="1.31.2" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.105" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.109" />
|
||||
<PackageReference Include="System.ComponentModel.Annotations" Version="5.0.0" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@ -13,6 +13,6 @@
|
||||
<PackageReference Include="Mapster" Version="7.3.0" />
|
||||
<PackageReference Include="MySqlConnector" Version="2.2.6" />
|
||||
<PackageReference Include="SqlSugar.IOC" Version="2.0.0" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.105" />
|
||||
<PackageReference Include="SqlSugarCoreNoDrive" Version="5.1.4.109" />
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
using ZR.Common;
|
||||
using ZR.Common.Cache;
|
||||
using ZR.Infrastructure.Cache;
|
||||
|
||||
namespace ZR.ServiceCore.SqlSugar
|
||||
{
|
||||
@ -31,7 +30,10 @@ namespace ZR.ServiceCore.SqlSugar
|
||||
|
||||
public IEnumerable<string> GetAllKey<V>()
|
||||
{
|
||||
return RedisServer.Cache.Keys("*");
|
||||
var keys = RedisServer.Cache.Keys("cache:SqlSugarDataCache.*");
|
||||
// return RedisServer.Cache.Keys("cache:SqlSugarDataCache.*");
|
||||
keys = keys.Select(it => it.Replace("cache:", "")).ToArray();
|
||||
return keys;
|
||||
// return CacheHelper.GetCacheKeys();
|
||||
}
|
||||
|
||||
@ -51,15 +53,16 @@ namespace ZR.ServiceCore.SqlSugar
|
||||
}
|
||||
else
|
||||
{
|
||||
var restul = create();
|
||||
var result = create();
|
||||
|
||||
Add(cacheKey, restul, cacheDurationInSeconds);
|
||||
return restul;
|
||||
Add(cacheKey, result, cacheDurationInSeconds);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public void Remove<V>(string key)
|
||||
{
|
||||
// key = key.Split("cache:")[1];
|
||||
RedisServer.Cache.Del(key);
|
||||
// CacheHelper.Remove(key);
|
||||
}
|
||||
|
||||
@ -4,12 +4,12 @@ using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
using Microsoft.Extensions.Hosting;
|
||||
using SqlSugar.IOC;
|
||||
using ZR.Model.System;
|
||||
using ZR.Infrastructure.Cache;
|
||||
using ZR.ServiceCore.Model;
|
||||
|
||||
namespace ZR.ServiceCore.SqlSugar
|
||||
{
|
||||
public static class SqlsugarSetup
|
||||
public static class SqlSugarSetup
|
||||
{
|
||||
private static NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
|
||||
|
||||
@ -56,6 +56,15 @@ namespace ZR.ServiceCore.SqlSugar
|
||||
{
|
||||
InitTable.InitDb();
|
||||
}
|
||||
|
||||
StaticConfig.CacheRemoveByLikeStringFunc = (service, key) =>
|
||||
{
|
||||
var keyList = RedisServer.Cache.Keys("cache:SqlSugarDataCache" + key + "*");
|
||||
foreach (var item in keyList)
|
||||
{
|
||||
RedisServer.Cache.Del(item.Split("cache:")[1]);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
Loading…
x
Reference in New Issue
Block a user