public void GetOrCreateWithslidingExpiration()
        {
            var key = Guid.NewGuid().ToString();
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = CacheProviderFactory.GetHttpRuntimeCache();
            var result = cacheProvider.GetOrCreate <Guid>(key, () => val, TimeSpan.FromSeconds(1.5D));

            Assert.AreEqual(result, val);
            {
                Thread.Sleep(1000);
                var exist = cacheProvider.TryGet <Guid>(key, out val);
                Assert.IsTrue(exist);
                Assert.AreEqual(result, val);
            }
            {
                Thread.Sleep(1000);
                var exist = cacheProvider.TryGet <Guid>(key, out val);
                Assert.IsTrue(exist);
                Assert.AreEqual(result, val);
            }
            {
                Thread.Sleep(2000);
                var exist = cacheProvider.TryGet <Guid>(key, out val);
                Assert.IsFalse(exist);
                Assert.AreEqual(val, Guid.Empty);
            }
        }
示例#2
0
        public void ExpireAll()
        {
            var key = Guid.NewGuid().ToString();
            //region a 创建 key->val1
            IHttpRuntimeCacheProvider cacheProvider1 = CacheProviderFactory.GetHttpRuntimeCache("e");

            cacheProvider1.GetOrCreate <Guid>(key, k => Guid.NewGuid());

            //reigon b 创建 key-val2
            IHttpRuntimeCacheProvider cacheProvider2 = CacheProviderFactory.GetHttpRuntimeCache("f");

            cacheProvider2.GetOrCreate <Guid>(key, k => Guid.NewGuid());

            //region a 过期全部, 确认 region b 未被过期
            ((HttpRuntimeCacheProvider)cacheProvider1).ExpireAll();
            Guid val1;
            var  exist = cacheProvider1.TryGet <Guid>(key, out val1);

            Assert.IsFalse(exist);
            Assert.AreEqual(val1, Guid.Empty);

            Guid val2;
            var  exist2 = cacheProvider2.TryGet <Guid>(key, out val2);

            Assert.IsTrue(exist2);
        }
示例#3
0
        public void Duplicate2()
        {
            var key = Guid.NewGuid().ToString();
            //region a 创建 key->val1
            IHttpRuntimeCacheProvider cacheProvider1 = CacheProviderFactory.GetHttpRuntimeCache("c");

            cacheProvider1.GetOrCreate <Guid>(key, k => Guid.NewGuid());
            Assert.IsTrue(((HttpRuntimeCacheProvider)cacheProvider1).Count() == 1);

            //reigon b 创建 key-val2
            IHttpRuntimeCacheProvider cacheProvider2 = CacheProviderFactory.GetHttpRuntimeCache("d");

            cacheProvider2.GetOrCreate <Guid>(key, k => Guid.NewGuid());
            Assert.IsTrue(((HttpRuntimeCacheProvider)cacheProvider2).Count() == 1);


            //确认reigon a 键 key 与 region b 键 key 对应值不同
            Guid val1;
            var  exist1 = cacheProvider1.TryGet <Guid>(key, out val1);

            Assert.IsTrue(exist1);

            Guid val2;
            var  exist2 = cacheProvider2.TryGet <Guid>(key, out val2);

            Assert.IsTrue(exist2);

            Assert.AreNotEqual(val1, val2);
        }
        public void TryGet()
        {
            var  key = Guid.NewGuid().ToString();
            Guid val;

            IHttpRuntimeCacheProvider cacheProvider = CacheProviderFactory.GetHttpRuntimeCache();
            var exist = cacheProvider.TryGet <Guid>(key, out val);

            Assert.IsFalse(exist);
            Assert.AreEqual(val, Guid.Empty);
        }
        public void Expire()
        {
            var key = Guid.NewGuid().ToString();
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = CacheProviderFactory.GetHttpRuntimeCache();
            var result = cacheProvider.GetOrCreate <Guid>(key, () => val);

            Assert.AreEqual(result, val);

            cacheProvider.Expire(key);
            Guid val2;
            var  exist = cacheProvider.TryGet <Guid>(key, out val2);

            Assert.IsFalse(exist);
            Assert.AreEqual(val2, Guid.Empty);
        }
        public void GetOrCreateWithAbsoluteExpiration()
        {
            var key = Guid.NewGuid().ToString();
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = CacheProviderFactory.GetHttpRuntimeCache();
            var result = cacheProvider.GetOrCreate <Guid>(key, () => val, DateTime.UtcNow.AddSeconds(2D));

            Assert.AreEqual(result, val);

            var exist = cacheProvider.TryGet <Guid>(key, out val);

            Assert.IsTrue(exist);
            Assert.AreEqual(result, val);

            Thread.Sleep(2000);
            exist = cacheProvider.TryGet <Guid>(key, out val);
            Assert.IsFalse(exist);
            Assert.AreEqual(val, Guid.Empty);
        }
        public void Overwrite()
        {
            var key = Guid.NewGuid().ToString();
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = CacheProviderFactory.GetHttpRuntimeCache();
            var result = cacheProvider.GetOrCreate <Guid>(key, () => val);

            Assert.AreEqual(result, val);

            var val2 = Guid.NewGuid();

            cacheProvider.Overwrite <Guid>(key, val2);

            Guid val3;
            var  exist = cacheProvider.TryGet <Guid>(key, out val3);

            Assert.IsTrue(exist);
            Assert.AreEqual(val3, val2);
        }
        public void GetOrCreate()
        {
            var key = Guid.NewGuid().ToString();
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = CacheProviderFactory.GetHttpRuntimeCache();
            var result = cacheProvider.GetOrCreate <Guid>(key, () => val);

            Assert.AreEqual(result, val);

            {
                var exist = cacheProvider.TryGet <Guid>(key, out val);
                Assert.IsTrue(exist);
                Assert.AreEqual(result, val);
            }

            {
                var result2 = cacheProvider.GetOrCreate <Guid>(key, () => {
                    Assert.Fail();
                    return(Guid.NewGuid());
                });
                Assert.AreEqual(result2, val);
            }
        }