public void Remove(CacheGroup group) { foreach (var entry in _cache.GetEntriesByGroup(group)) { _cache.Remove(entry); } }
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); } }
/// <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())); }
public CacheAttribute(CacheItem item, int expireSecond = 0, CacheGroup groupType = CacheGroup.Default) { CacheItem = item; ExpireSecond = expireSecond; CacheGroup = groupType; }
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()))); }
public void Remove(CacheGroup group, object key) { var cacheKey = GenerateCacheKey(group, key); _cache.Remove(cacheKey); }
public void Set(CacheGroup group, object key, object value) { this.Set(group, key, value, null); }
public bool TryGetValue <TItem>(CacheGroup group, object key, out TItem value) => _cache.TryGetValue <TItem>(GenerateCacheKey(group, key), out value);
public TItem Get <TItem>(CacheGroup group, object key) => _cache.Get <TItem>(GenerateCacheKey(group, key));
private string GenerateCacheKey(CacheGroup group, object key) => string.Format("{0}.{1}", group.GetDescription(), key);