示例#1
0
        /// <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));
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }
示例#5
0
        /// <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);
 }
示例#7
0
        /// <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));
 }
示例#10
0
        /// <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));
        }
示例#11
0
 /// <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)));
 }
示例#12
0
 /// <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)));
 }