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