/// <summary> /// 格式化 Key /// </summary> /// <param name="key"></param> /// <param name="cacheGroup"></param> /// <returns></returns> public static string FormatKey(string key, MCaching.CacheGroup cacheGroup) { var versionId = MConfigManager.GetAppSettingsValue <string>( MConfigManager.FormatKey(cacheGroup + "_Version", MConfigs.ConfigsCategory.Cache), "1.0"); return(string.Format("{0}.{1}.{2}", cacheGroup, versionId, key)); }
/// <summary> /// 移除缓存 来自 缓存分组 /// </summary> /// <param name="cacheGroup"></param> /// <returns></returns> public int RemoveByKeyGroup(MCaching.CacheGroup cacheGroup) { var result = 0; var keys = GetKeys(); foreach (var key in keys) { try { if (VerifyKeyInGroup(key, cacheGroup)) { if (GetClient().Remove(key)) { result++; } } } catch (Exception ex) { MLogManager.Error(MLogGroup.Other.Redis缓存, null, "获取所有缓存Key 出错!", ex); } } return(result); }
/// <summary> /// 获取缓存值 来自 缓存Key /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="cacheGroup"> </param> /// <returns></returns> public T GetValByKey <T>(string key, MCaching.CacheGroup cacheGroup) { var cacheKey = FormatKey(key, cacheGroup); var result = GetClient().Get <T>(cacheKey); return(result); }
/// <summary> /// 添加缓存 /// </summary> /// <param name="key"></param> /// <param name="cacheGroup"> </param> /// <param name="obj"></param> /// <returns></returns> public bool Add <T>(string key, MCaching.CacheGroup cacheGroup, T obj) { var result = false; try { var cacheKey = FormatKey(key, cacheGroup); result = GetClient().Add <T>(cacheKey, obj); } catch (Exception ex) { MLogManager.Error(MLogGroup.Other.Redis缓存, null, "添加缓存 出错!", ex); } return(result); }
/// <summary> /// 获取缓存值列表 来自 缓存Keys /// </summary> /// <typeparam name="T"></typeparam> /// <param name="keys"></param> /// <param name="cacheGroup"> </param> /// <returns></returns> public Dictionary <string, T> GetValByKeys <T>(List <string> keys, MCaching.CacheGroup cacheGroup) { var result = new Dictionary <string, T>(); var keyList = new List <string>(); if (keys != null) { foreach (var key in keys) { var nKey = FormatKey(key, cacheGroup); if (!keyList.Contains(nKey)) { keyList.Add(nKey); } } result = (Dictionary <string, T>)GetClient().GetAll <T>(keyList); } return(result); }
/// <summary> /// 使用缓存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="cacheGroup"></param> /// <param name="expired"> </param> /// <param name="cache"></param> /// <param name="func"></param> public static T UseCached <T>(string key, MCaching.CacheGroup cacheGroup, DateTime expired, ICache cache, Func <object> func) where T : class { try { T cacheResult; if (cache.Contains(key, cacheGroup)) { cacheResult = (T)cache.GetValByKey <T>(key, cacheGroup); return(cacheResult); } else { cacheResult = func.Invoke() as T; cache.Set <T>(key, cacheGroup, cacheResult, expired); return(cacheResult); } } catch (Exception ex) { MLogManager.Error(MLogGroup.Other.Redis缓存, "", "使用缓存数据出错!", ex); } return(null); }
/// <summary> /// 获取所有缓存Key /// </summary> /// <param name="cacheGroup"></param> /// <returns></returns> public List <string> GetKeys(MCaching.CacheGroup cacheGroup) { var result = new List <string>(); try { var keyList = GetKeys(); if (keyList != null && keyList.Count > 0) { foreach (var key in keyList) { if (VerifyKeyInGroup(key, cacheGroup)) { result.Add(FormatKey(key, cacheGroup)); } } } } catch (Exception ex) { MLogManager.Error(MLogGroup.Other.Redis缓存, null, "获取缓存key", ex); } return(result); }
/// <summary> /// 使用缓存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="cacheGroup"></param> /// <param name="expired"> </param> /// <param name="func"></param> /// <returns></returns> public static T UseCached <T>(string key, MCaching.CacheGroup cacheGroup, DateTime expired, Func <object> func) where T : class { return(UseCached <T>(key, cacheGroup, expired, GetCacheObj(), func)); }
/// <summary> /// 使用缓存 /// </summary> /// <typeparam name="T"></typeparam> /// <param name="key"></param> /// <param name="cacheGroup"></param> /// <param name="func"></param> /// <returns></returns> public static T UseCached <T>(string key, MCaching.CacheGroup cacheGroup, Func <object> func) where T : class { return(UseCached <T>(key, cacheGroup, DateTime.Now.AddMinutes(30), GetCacheObj(), func)); }
/// <summary> /// 校验 该key 是否属于该组 /// </summary> /// <param name="key"></param> /// <param name="cacheGroup"></param> /// <returns></returns> public static bool VerifyKeyInGroup(string key, MCaching.CacheGroup cacheGroup) { var groupName = (key ?? "").Split('.')[0]; return(groupName.Equals(cacheGroup.ToString(), StringComparison.InvariantCultureIgnoreCase)); }
/// <summary> /// 是否存在 该Key /// </summary> /// <param name="key"></param> /// <param name="cacheGroup"></param> /// <returns></returns> public bool Contains(string key, MCaching.CacheGroup cacheGroup) { return(GetKeys().Contains(FormatKey(key, cacheGroup))); }
/// <summary> /// 移除缓存 来自 缓存Key /// </summary> /// <param name="key"></param> /// <param name="cacheGroup"> </param> /// <returns></returns> public bool RemoveByKey(string key, MCaching.CacheGroup cacheGroup) { return(RemoveByKey(FormatKey(key, cacheGroup))); }