示例#1
0
        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();
        }
示例#2
0
        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();
        }
示例#3
0
 public MemoryCacheLoader(ILoader innerLoader, MemoryCachePolicy?defaultPolicy = null)
 {
     _innerLoader   = innerLoader;
     _defaultPolicy = defaultPolicy ?? MemoryCachePolicy.OriginOnly;
 }