예제 #1
0
        public override void Set(CacheItem item, CacheItemPolicy policy)
        {
            PrimaryCache.Set(item, policy);

            //queue up writing to secondary cache on another thread
            ThreadPool.QueueUserWorkItem(_ => SecondaryCache.Set(PrimaryCache.GetCacheItem(item.Key, item.RegionName), policy));
        }
예제 #2
0
        public override CacheItem AddOrGetExisting(CacheItem value, CacheItemPolicy policy)
        {
            var item = PrimaryCache.AddOrGetExisting(value, policy);

            //queue up writing to secondary cache on another thread
            ThreadPool.QueueUserWorkItem(_ => SecondaryCache.AddOrGetExisting(PrimaryCache.GetCacheItem(value.Key), policy));

            return(item);
        }
예제 #3
0
        public override CacheItem GetCacheItem(string key, string regionName = null)
        {
            var item = PrimaryCache.GetCacheItem(key, regionName);

            if (item == null)
            {
                item = SecondaryCache.GetCacheItem(key, regionName);

                if (item != null)
                {
                    PrimaryCache.Set(item, new CacheItemPolicy());
                }
            }

            return(item);
        }