Ejemplo n.º 1
0
 public void Remove(CacheGroup group)
 {
     foreach (var entry in _cache.GetEntriesByGroup(group))
     {
         _cache.Remove(entry);
     }
 }
Ejemplo n.º 2
0
        public void Set(CacheGroup group, object key, object value, ExpirationSettings settings)
        {
            var cacheKey = GenerateCacheKey(group, key);

            if (settings != null)
            {
                var options = new MemoryCacheEntryOptions();

                if (settings.AbsoluteExpiration.HasValue)
                {
                    options.AbsoluteExpirationRelativeToNow = TimeSpan.FromHours((double)settings.AbsoluteExpiration.Value);
                }

                if (settings.SlidingExpiration.HasValue)
                {
                    options.SlidingExpiration = TimeSpan.FromHours((double)settings.SlidingExpiration.Value);
                }

                _cache.Set(GenerateCacheKey(group, key), value, options);
            }
            else
            {
                _cache.Set(GenerateCacheKey(group, key), value);
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// 根据枚举CacheGroup来切换缓存
        /// </summary>
        /// <param name="groupType"></param>
        /// <returns></returns>
        public static ICache Get(CacheGroup groupType = CacheGroup.Default)
        {
            if (!ConfigurationManager.AppSettings["IsEnableCache"].ToBool())
            {
                return(IocContainer.Resolve <ICache>(CacheType.Empty.ToString()));
            }

            CacheType cacheType;

            switch (groupType)
            {
            case CacheGroup.Default:
            default:
                cacheType = CacheType.Local;
                break;
            }
            return(IocContainer.Resolve <ICache>(cacheType.ToString()));
        }
Ejemplo n.º 4
0
 public CacheAttribute(CacheItem item, int expireSecond = 0, CacheGroup groupType = CacheGroup.Default)
 {
     CacheItem    = item;
     ExpireSecond = expireSecond;
     CacheGroup   = groupType;
 }
Ejemplo n.º 5
0
        public static IEnumerable <object> GetEntriesByGroup(this IMemoryCache memoryCache, CacheGroup group)
        {
            var flags   = BindingFlags.Instance | BindingFlags.NonPublic;
            var entries = (IDictionary)memoryCache.GetType().GetField("_entries", flags).GetValue(memoryCache);

            return(entries.Keys.Cast <string>().Where(x => x.ToString().StartsWith(group.GetDescription())));
        }
Ejemplo n.º 6
0
        public void Remove(CacheGroup group, object key)
        {
            var cacheKey = GenerateCacheKey(group, key);

            _cache.Remove(cacheKey);
        }
Ejemplo n.º 7
0
 public void Set(CacheGroup group, object key, object value)
 {
     this.Set(group, key, value, null);
 }
Ejemplo n.º 8
0
 public bool TryGetValue <TItem>(CacheGroup group, object key, out TItem value) => _cache.TryGetValue <TItem>(GenerateCacheKey(group, key), out value);
Ejemplo n.º 9
0
 public TItem Get <TItem>(CacheGroup group, object key) => _cache.Get <TItem>(GenerateCacheKey(group, key));
Ejemplo n.º 10
0
 private string GenerateCacheKey(CacheGroup group, object key) => string.Format("{0}.{1}", group.GetDescription(), key);