diff --git a/CoreCms.Net.Caching/AutoMate/RedisCache/IRedisOperationRepository.cs b/CoreCms.Net.Caching/AutoMate/RedisCache/IRedisOperationRepository.cs
index 21f0473a..6b4a8947 100644
--- a/CoreCms.Net.Caching/AutoMate/RedisCache/IRedisOperationRepository.cs
+++ b/CoreCms.Net.Caching/AutoMate/RedisCache/IRedisOperationRepository.cs
@@ -62,7 +62,6 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
///
public Task LockTakeAsync(string key, string value, TimeSpan cacheTime);
-
///
/// 获取值
///
@@ -70,6 +69,11 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
///
Task Get(string key);
+ ///
+ /// 获取一个值
+ ///
+ ///
+ ///
RedisValue StringGet(string key);
///
@@ -79,29 +83,88 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
///
List SearchKey(string pattern);
- //获取值,并序列化
+ ///
+ /// 获取值,并序列化
+ ///
+ ///
+ ///
+ ///
Task Get(string key);
+ ///
+ /// 获取一个值
+ ///
+ ///
+ ///
+ ///
+ ///
//保存
Task StringSetAsync(string key, string value, TimeSpan cacheTime);
+ ///
+ /// 获取一个值
+ ///
+ ///
+ ///
+ ///
+ ///
bool StringSet(string key, string value, TimeSpan cacheTime);
-
+
+ ///
+ /// 获取一个值
+ ///
+ ///
+ ///
+ ///
bool StringSet(string key, string value);
+ ///
+ /// 获取一个值
+ ///
+ ///
+ ///
+ ///
bool StringSet(string key, RedisValue value);
+ ///
+ /// 获取一个值
+ ///
+ ///
+ ///
+ ///
+ ///
bool StringSet(string key, RedisValue value, TimeSpan cacheTime);
-
+ ///
+ /// 设置一个缓存
+ ///
+ ///
+ ///
+ ///
+ ///
Task SetAsync(string key, object value, TimeSpan cacheTime);
+ ///
+ /// Increment 递增
+ ///
+ ///
+ ///
+ ///
Task StringIncrement(string key, long value=1);
- //判断是否存在
+ ///
+ /// 判断是否存在
+ ///
+ ///
+ ///
Task KeyExistsAsync(string key);
+ ///
+ /// 判断是否存在
+ ///
+ ///
+ ///
bool KeyExists(string key);
///
@@ -111,11 +174,35 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
///
Task KeyTime(string key);
- //移除某一个缓存值
+ ///
+ /// 删除异步
+ ///
+ ///
+ ///
Task KeyDeleteAsync(string key);
+ ///
+ /// 删除key
+ ///
+ ///
void KeyDelete(string key);
- //全部清除
+ ///
+ /// 模糊删除
+ ///
+ ///
+ void LikeRemove(string pattern);
+
+ ///
+ /// 模糊删除异步
+ ///
+ ///
+ ///
+ Task LikeRemoveAsync(string pattern);
+
+ ///
+ /// 全部清除
+ ///
+ ///
Task Clear();
///
diff --git a/CoreCms.Net.Caching/AutoMate/RedisCache/RedisOperationRepository.cs b/CoreCms.Net.Caching/AutoMate/RedisCache/RedisOperationRepository.cs
index df6b2c98..77b7654a 100644
--- a/CoreCms.Net.Caching/AutoMate/RedisCache/RedisOperationRepository.cs
+++ b/CoreCms.Net.Caching/AutoMate/RedisCache/RedisOperationRepository.cs
@@ -114,7 +114,6 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
return await _database.LockReleaseAsync(key, value);
}
-
///
/// 判断key是否存在
///
@@ -122,7 +121,7 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
///
public async Task KeyExistsAsync(string key)
{
-
+
return await _database.KeyExistsAsync(key);
}
@@ -134,10 +133,9 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
public bool KeyExists(string key)
{
- return _database.KeyExists(key);
+ return _database.KeyExists(key);
}
-
///
/// 获取键过期时间
///
@@ -145,19 +143,28 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
///
public async Task KeyTime(string key)
{
-
+
return await _database.KeyTimeToLiveAsync(key);
}
-
+ ///
+ /// 获取值
+ ///
+ ///
+ ///
public async Task Get(string key)
{
return await _database.StringGetAsync(key);
}
+ ///
+ /// 获取值
+ ///
+ ///
+ ///
public RedisValue StringGet(string key)
{
- return _database.StringGet(key);
+ return _database.StringGet(key);
}
///
@@ -176,7 +183,7 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
{
foreach (var key in (RedisKey[])redisResult)
{
-
+
list.Add(key);
}
}
@@ -194,7 +201,48 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
_database.KeyDelete(key);
}
+ ///
+ /// 模糊删除
+ ///
+ ///
+ public void LikeRemove(string pattern)
+ {
+ var redisResult = _database.ScriptEvaluate(LuaScript.Prepare(
+ //Redis的keys模糊查询:
+ " local res = redis.call('KEYS', @keypattern) " +
+ " return res "), new { @keypattern = pattern });
+ if (!redisResult.IsNull)
+ {
+ var preSult = (RedisKey[])redisResult;
+ _database.KeyDelete(preSult);
+ }
+ }
+
+ ///
+ /// 模糊删除
+ ///
+ ///
+ public async Task LikeRemoveAsync(string pattern)
+ {
+ var redisResult = await _database.ScriptEvaluateAsync(LuaScript.Prepare(
+ //Redis的keys模糊查询:
+ " local res = redis.call('KEYS', @keypattern) " +
+ " return res "), new { @keypattern = pattern });
+ if (!redisResult.IsNull)
+ {
+ var preSult = (RedisKey[])redisResult;
+ await _database.KeyDeleteAsync(preSult);
+ }
+ }
+
+ ///
+ /// 获取值
+ ///
+ ///
+ ///
+ ///
+ ///
public async Task SetAsync(string key, object value, TimeSpan cacheTime)
{
if (value != null)
@@ -204,82 +252,90 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
}
}
-
+ ///
+ /// 获取值
+ ///
+ ///
+ ///
+ ///
+ ///
public async Task StringSetAsync(string key, string value, TimeSpan cacheTime)
{
-
- return await _database.StringSetAsync(key, value, cacheTime);
+
+ return await _database.StringSetAsync(key, value, cacheTime);
}
-
-
- public bool StringSet(string key, string value, TimeSpan cacheTime)
+ ///
+ /// 获取值
+ ///
+ ///
+ ///
+ ///
+ ///
+ public bool StringSet(string key, string value, TimeSpan cacheTime)
{
-
- return _database.StringSet(key, value, cacheTime);
-
+ return _database.StringSet(key, value, cacheTime);
}
-
+ ///
+ /// 获取值
+ ///
+ ///
+ ///
+ ///
public bool StringSet(string key, string value)
{
-
return _database.StringSet(key, value);
-
}
-
+ ///
+ /// 获取值
+ ///
+ ///
+ ///
+ ///
+ ///
public bool StringSet(string key, RedisValue value, TimeSpan cacheTime)
{
-
return _database.StringSet(key, value, cacheTime);
-
}
-
+ ///
+ /// 获取值
+ ///
+ ///
+ ///
+ ///
public bool StringSet(string key, RedisValue value)
{
-
return _database.StringSet(key, value);
-
}
-
-
///
/// Increment 递增
///
///
///
///
- public async Task StringIncrement(string key, long value=1)
+ public async Task StringIncrement(string key, long value = 1)
{
-
- return await _database.StringIncrementAsync(key, value);
-
+ return await _database.StringIncrementAsync(key, value);
}
-
-
-
+ ///
+ /// 获取一个值并序列化
+ ///
+ ///
+ ///
+ ///
public async Task Get(string key)
{
var value = await _database.StringGetAsync(key);
- if (value.HasValue)
- {
- //需要用的反序列化,将Redis存储的Byte[],进行反序列化
- return JsonConvert.DeserializeObject(value);
- }
- else
- {
- return default;
- }
+ //需要用的反序列化,将Redis存储的Byte[],进行反序列化
+ return value.HasValue ? JsonConvert.DeserializeObject(value) : default;
}
-
-
-
///
/// 根据key获取RedisValue
///
@@ -439,7 +495,7 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
/// 分数
public async Task SortedSetAddAsync(string redisKey, string redisValue, double score)
{
- return await _database.SortedSetAddAsync(redisKey, redisValue, score);
+ return await _database.SortedSetAddAsync(redisKey, redisValue, score);
}
///
@@ -470,7 +526,7 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
///
public async Task SortedSetRankAsync(string key, string value)
{
- var result= await _database.SortedSetRankAsync(key,value);
+ var result = await _database.SortedSetRankAsync(key, value);
return result;
}
@@ -506,16 +562,16 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
///
public async Task> SortedSetRangeByRankAsync(string redisKey, int start, int stop)
{
- var result= await _database.SortedSetRangeByRankAsync(redisKey, start, stop);
+ var result = await _database.SortedSetRangeByRankAsync(redisKey, start, stop);
+
-
return result.Select(o => o.ToString());
}
-
+
///
/// 移出序列表里的指定范围数量
///
@@ -523,7 +579,7 @@ namespace CoreCms.Net.Caching.AutoMate.RedisCache
/// 0 是第一个
/// 最大分数值
///
- public async Task SortedSetRemoveRangeByRankAsync(string redisKey, int start, int stop)
+ public async Task SortedSetRemoveRangeByRankAsync(string redisKey, int start, int stop)
{
return await _database.SortedSetRemoveRangeByRankAsync(redisKey, start, stop);
}
diff --git a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs
index 1758b2f2..105deebc 100644
--- a/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs
+++ b/CoreCms.Net.Web.Admin/Controllers/Good/CoreCmsGoodsController.cs
@@ -15,6 +15,7 @@ using System.IO;
using System.Linq;
using System.Linq.Expressions;
using System.Threading.Tasks;
+using CoreCms.Net.Caching.AutoMate.RedisCache;
using CoreCms.Net.Configuration;
using CoreCms.Net.Filter;
using CoreCms.Net.IServices;
@@ -58,6 +59,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
private readonly ICoreCmsUserGradeServices _userGradeServices;
private readonly ICoreCmsProductsDistributionServices _productsDistributionServices;
private readonly IWebHostEnvironment _webHostEnvironment;
+ private readonly IRedisOperationRepository _redisOperationRepository;
///
@@ -76,7 +78,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
, ICoreCmsGoodsCategoryExtendServices categoryExtendServices
, ICoreCmsLabelServices labelServices
, ICoreCmsProductsDistributionServices productsDistributionServices
- , ICoreCmsGoodsTypeSpecServices goodsTypeSpecServices)
+ , ICoreCmsGoodsTypeSpecServices goodsTypeSpecServices, IRedisOperationRepository redisOperationRepository)
{
_webHostEnvironment = webHostEnvironment;
_coreCmsGoodsServices = coreCmsGoodsServices;
@@ -92,6 +94,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
_labelServices = labelServices;
_productsDistributionServices = productsDistributionServices;
_goodsTypeSpecServices = goodsTypeSpecServices;
+ _redisOperationRepository = redisOperationRepository;
}
#region 获取列表============================================================
@@ -531,6 +534,7 @@ namespace CoreCms.Net.Web.Admin.Controllers
{
await _productsServices.UpdateAsync(p => new CoreCmsProducts() { isDel = true },
p => p.goodsId == model.id);
+ await _redisOperationRepository.LikeRemoveAsync("SqlSugarDataCache.GoodListDTO." + "*");
}
jm.code = bl ? 0 : 1;
jm.msg = bl ? GlobalConstVars.DeleteSuccess : GlobalConstVars.DeleteFailure;