private void OnLoaded <T>(Uri uri, MemoryCachePolicy policy, T obj) { Subject <object> subject; lock (this) { Log.Debug($"{policy} - Loaded from origin to cache - {uri}"); subject = _loadingSubjects[uri]; _cache[uri] = obj; _loadingSubjects.Remove(uri); } subject.OnNext(obj); subject.OnCompleted(); }
static void Main(string[] args) { Cache.MemoryCache cache = Cache.MemoryCache.DefaultCache;//获取缓存 //这里处理自己的逻辑 MemoryCachePolicy policy = new MemoryCachePolicy(PolicyType.TimeChange); //设置缓存策略 TimeChangeMonitor moniter = new TimeChangeMonitor(TimeSpan.FromSeconds(10)); //设置相对时间的时间监视器 //TimeChangeMonitor moniter = new TimeChangeMonitor(DateTime.Now.AddSeconds(600));//设置绝对时间的时间监视器 policy.TimeChangeMoniter = moniter; //存入缓存 cache.SetCache("Cmd", "AAAAA", policy); if (cache.ContainCache("Cmd") == false) { Console.WriteLine("True"); } string dsCheck = cache.GetCache <string>("Cmd"); Console.WriteLine(dsCheck); Console.ReadKey(); //object data = new object(); //string key = "UniqueIDOfDataObject"; ////Insert empty cache item with absolute timeout //string[] absKey = { "Absolute" + key }; //MemoryCache.Default.Add("Absolute" + key, new object(), DateTimeOffset.Now.AddMinutes(10)); ////Create a CacheEntryChangeMonitor link to absolute timeout cache item //CacheEntryChangeMonitor monitor = MemoryCache.Default.CreateCacheEntryChangeMonitor(absKey); ////Insert data cache item with sliding timeout using changeMonitors //CacheItemPolicy itemPolicy = new CacheItemPolicy(); //itemPolicy.ChangeMonitors.Add(monitor); //itemPolicy.SlidingExpiration = new TimeSpan(0, 60, 0); //MemoryCache.Default.Add(key, data, itemPolicy, null); //MemoryCacheHelper _cache = new MemoryCacheHelper(); //_cache.Add("A1", "B1", null, System.DateTime.Now.AddSeconds(11)); //_cache.RemovedCallback += RemovedCallback; ////_cache.UpdateCallback += UpdateCallback; //string d = _cache.Get<string>("A1"); //Console.WriteLine("A1=>" + d); //_cache.Update<string>("A1", "B2"); //Console.ReadKey(); }
public MemoryCacheLoader(ILoader innerLoader, MemoryCachePolicy?defaultPolicy = null) { _innerLoader = innerLoader; _defaultPolicy = defaultPolicy ?? MemoryCachePolicy.OriginOnly; }