/// <summary> /// 移除缓存 /// </summary> /// <param name="arguments">拦截方法的参数</param> /// <param name="returnType">拦截方法的返回类型</param> /// <param name="returnValue">拦截方法的返回值</param> public void RemoveIntercept(object[] arguments, Type returnType, object returnValue) { foreach (var keyPerfix in KeysPerfix) { var regionKey = _keyGenerator.GetKeyRegion(KeyNamespace, string.IsNullOrEmpty(keyPerfix) ? returnType.Name : keyPerfix); var itemKeys = new List <string>(); if (KeyIndex != null && KeyIndex.Length > 0) { itemKeys.Add(_keyGenerator.GetRightKey(arguments, KeyIndex)); foreach (var key in KeyIndex) { itemKeys.Add(_keyGenerator.GetRightKey(arguments, key)); } } var fieldKeys = new List <string>(); if (FieldIndex != null && FieldIndex.Length > 0) { fieldKeys.Add(_keyGenerator.GetRightKey(arguments, FieldIndex)); foreach (var field in FieldIndex) { fieldKeys.Add(_keyGenerator.GetRightKey(arguments, field)); } } var cacheKeys = new List <string>(); if (itemKeys.Count > 0) { foreach (var itemKey in itemKeys) { cacheKeys.Add(_keyGenerator.GetCacheKey(regionKey, itemKey)); } } else { cacheKeys.Add(regionKey); } cacheKeys = cacheKeys.Distinct().ToList(); if (cacheKeys.Count > 0) { foreach (var cacheKey in cacheKeys) { if (fieldKeys.Count > 0) { foreach (var filedKey in fieldKeys) { CacheRepo.HashDelete(cacheKey, filedKey); } } else { CacheRepo.KeyDelete(cacheKey); } } } } }
/// <summary> /// 移除缓存 /// </summary> /// <param name="arguments">拦截方法的参数</param> /// <param name="returnType">拦截方法的返回类型</param> /// <param name="returnValue">拦截方法的返回值</param> public void RemoveIntercept(object[] arguments, Type returnType, object returnValue) { foreach (var keyPerfix in KeysPerfix) { var leftKey = _keyGenerator.GetKeyRegion(KeyNamespace, string.IsNullOrEmpty(keyPerfix) ? returnType.Name : keyPerfix); var rightKeys = new List <string>(); if (FieldIndex != null && FieldIndex.Length > 0) { rightKeys.Add(_keyGenerator.GetRightKey(arguments, FieldIndex)); foreach (var field in FieldIndex) { rightKeys.Add(_keyGenerator.GetRightKey(arguments, field)); } } var cacheKeys = new List <string>(); if (rightKeys.Count > 0) { foreach (var rightKey in rightKeys) { cacheKeys.Add(_keyGenerator.GetCacheKey(leftKey, rightKey)); } cacheKeys = cacheKeys.Distinct().ToList(); if (cacheKeys.Count > 0) { foreach (var cacheKey in cacheKeys) { CacheRepo.KeyDelete(cacheKey); } } } else { cacheKeys.Add(leftKey + ":*"); cacheKeys = cacheKeys.Distinct().ToList(); if (cacheKeys.Count > 0) { foreach (var cacheKey in cacheKeys) { CacheRepo.KeyDeletePattern(cacheKey); } } } } }