Esempio n. 1
0
        /// <summary>
        /// 获取缓存配置实例。
        /// </summary>
        /// <param name="key">缓存键。</param>
        /// <param name="dependency">缓存依赖项。</param>
        /// <returns>返回缓存配置实例。</returns>
        protected StorageCache GetCache(object key, IStorageCacheDependency dependency)
        {
            var hashedKey = GetCacheKey(key);
            var cache     = _cache.GetOrCreate(hashedKey, ctx =>
            {
                ctx.SetAbsoluteExpiration(Cores.DefaultCacheExpiration);
                return(_db.Find(hashedKey));
            });

            if (cache == null)
            {
                return(null);
            }
            if (dependency?.IsEqual(cache.Dependency) == false ||
                cache.ExpiredDate != null && cache.ExpiredDate < DateTimeOffset.Now)
            {
                Remove(hashedKey);
                return(null);
            }
            return(cache);
        }
Esempio n. 2
0
        /// <summary>
        /// 获取缓存配置实例。
        /// </summary>
        /// <param name="key">缓存键。</param>
        /// <param name="dependency">缓存依赖项。</param>
        /// <returns>返回缓存配置实例。</returns>
        protected async Task <StorageCache> GetCacheAsync(object key, IStorageCacheDependency dependency)
        {
            var hashedKey = GetCacheKey(key);
            var cache     = await _cache.GetOrCreateAsync(hashedKey, async ctx =>
            {
                ctx.SetAbsoluteExpiration(Cores.DefaultCacheExpiration);
                return(await _db.FindAsync(hashedKey));
            });

            if (cache == null)
            {
                return(null);
            }
            if (dependency?.IsEqual(cache.Dependency) == false ||
                cache.ExpiredDate != null && cache.ExpiredDate < DateTimeOffset.Now)
            {
                await RemoveAsync(hashedKey);

                return(null);
            }
            return(cache);
        }