/// <summary> /// 移除缓存 /// </summary> /// <param name="key"></param> public bool RemoveCache(string key) { CacheEntity cacheEntity = null; bool res = _DicCacheValue.TryRemove(key, out cacheEntity); if (cacheEntity != null) { _CurrentLength -= cacheEntity.CacheLength; } return(res); }
/// <summary> /// 创建缓存对象 /// </summary> /// <param name="cacheValue"></param> /// <param name="cacheLength"></param> /// <param name="absoluteExpiration"></param> /// <param name="slidingExpiration"></param> /// <returns></returns> private CacheEntity CreateCacheEntity(string cacheValue, int cacheLength, int?absoluteExpiration = null, int?slidingExpiration = null) { CacheEntity cacheEntity = new CacheEntity { CacheValue = cacheValue, CacheLength = cacheLength, CacheReferencesCount = 0, CacheVersion = 1 }; if (absoluteExpiration.HasValue) { cacheEntity.AbsoluteExpiration = DateTime.Now.AddSeconds(absoluteExpiration.Value); } if (slidingExpiration.HasValue) { cacheEntity.SlidingExpiration = slidingExpiration.Value; } if (!absoluteExpiration.HasValue && slidingExpiration.HasValue) { cacheEntity.AbsoluteExpiration = DateTime.Now.AddSeconds(slidingExpiration.Value); } _CurrentLength += cacheLength; return(cacheEntity); }
/// <summary> /// 获取缓存 /// </summary> /// <param name="key"></param> /// <returns></returns> public object GetCache(string key) { CacheEntity cacheEntity = null; if (GetCacheEntity(key, out cacheEntity)) { if (cacheEntity != null) { if (cacheEntity.IsExpiration) { RemoveCache(key); return(null); } else if (cacheEntity.SlidingExpiration.HasValue) { cacheEntity.AbsoluteExpiration = DateTime.Now.AddSeconds(cacheEntity.SlidingExpiration.Value); } cacheEntity.CacheReferencesCount++; cacheEntity.LastVisitDateTime = DateTime.Now; return(cacheEntity.CacheValue); } } return(null); }
/// <summary> /// 获取缓存对象 /// </summary> /// <param name="key"></param> /// <param name="cacheEntity"></param> /// <returns></returns> private bool GetCacheEntity(string key, out CacheEntity cacheEntity) { return(_DicCacheValue.TryGetValue(key, out cacheEntity)); }