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)); }
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); }
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); }