Пример #1
0
        public void Set_with_slidingExpiration_then_get()
        {
            var key   = Guid.NewGuid().ToString();
            var value = Guid.NewGuid();

            ICacheProvider cache = new MemcachedCacheProvider("enyim.com/memcached", "region4");

            cache.Overwrite(key, value, TimeSpan.FromSeconds(3D));

            {
                Guid value2;
                Thread.Sleep(2000);
                var exist = cache.TryGet <Guid>(key, out value2);
                Assert.IsTrue(exist);
                Assert.AreEqual(value2, value);
            }
            {
                Guid value2;
                Thread.Sleep(2000);
                var exist = cache.TryGet(key, out value2);
                Assert.IsTrue(exist);
                Assert.AreEqual(value2, value);
            }
            {
                Guid value2;
                Thread.Sleep(4000);
                var exist = cache.TryGet(key, out value2);
                Assert.IsFalse(exist);
            }
        }
        public void OverwriteWithAbsoluteExpirationTest()
        {
            var key = Guid.NewGuid().ToString("n");
            //key = "73218975a30d49ba9cd347bc1b62470a";
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();
            var t1 = DateTime.Now.AddSeconds(5D).ToTimestamp();
            var t2 = DateTime.UtcNow.AddSeconds(5D).ToTimestamp();

            Assert.AreEqual(t1, t2);

            cacheProvider.Overwrite(key, val, DateTime.Now.AddSeconds(6D));
            Guid result = Guid.NewGuid();

            {
                Thread.Sleep(TimeSpan.FromSeconds(4D));
                var exist = cacheProvider.TryGet <Guid>(key, out result);
                Assert.IsTrue(exist);
                Assert.AreEqual(result, val);
            }

            {
                Thread.Sleep(TimeSpan.FromSeconds(8D));
                var exist = cacheProvider.TryGet <Guid>(key, out result);
                Assert.IsFalse(exist);
            }
        }
        public void OverwriteWithslidingExpirationTest()
        {
            var key = Guid.NewGuid().ToString("n");

            key = "ecc6cf4d923f48b3a98f11b9641549fd";
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();

            cacheProvider.Overwrite(key, val, TimeSpan.FromSeconds(6D));

            Guid result;

            for (var i = 0; i < 2; i++)
            {
                Thread.Sleep(TimeSpan.FromSeconds(4D));
                var exist = cacheProvider.TryGet <Guid>(key, out result);
                Assert.IsTrue(exist);
                Assert.AreEqual(result, val);
            }

            {
                Thread.Sleep(TimeSpan.FromSeconds(8D));
                var exist = cacheProvider.TryGet <Guid>(key, out result);
                Assert.IsFalse(exist);
            }
        }
Пример #4
0
        public void Save_null_then_get()
        {
            var            key   = "key-object-null";
            ICacheProvider cache = new MemcachedCacheProvider("enyim.com/memcached", "region3");

            cache.Overwrite(key, (Person)null);
            Person id1;
            var    exists = cache.TryGet(key, out id1);

            Assert.IsTrue(exists);
        }
Пример #5
0
        private static void MultiLayerCacheExample()
        {
            Console.WriteLine("---Multilayer cache test---");
            // setup cache
            var memoryCache    = new MemoryCacheProvider(2);
            var memcachedCache = new MemcachedCacheProvider("127.0.0.1", 11211);
            var cache          = new MultiLevelCacheProvider(new IChainableCacheProvider[] { memoryCache, memcachedCache });
            var users          = SearchUsers("mirko", cache);

            users = SearchUsers("mirko", cache);
            Thread.Sleep(2000);
            users = SearchUsers("mirko", cache);
        }
Пример #6
0
        private static void ApplyCachingProvider(CachingProviderType cachingProvider, RepositoryOptionsBuilder builder)
        {
            switch (cachingProvider)
            {
            case CachingProviderType.MicrosoftInMemory:
            {
                builder.UseCachingProvider(new InMemoryCacheProvider());
                break;
            }

            case CachingProviderType.Redis:
            {
                var provider = new RedisCacheProvider(allowAdmin: true, defaultDatabase: 0, expiry: null);

                provider.Cache.Server.FlushAllDatabases();

                builder.UseCachingProvider(provider);

                break;
            }

            case CachingProviderType.Memcached:
            {
                var provider = new MemcachedCacheProvider("127.0.0.1", 11211);

                provider.Cache.Client.FlushAll();

                builder.UseCachingProvider(provider);

                break;
            }

            case CachingProviderType.Couchbase:
            {
                var provider = new CouchbaseCacheProvider("http://localhost:8091", "default", "password");

                using (var bucket = provider.Cache.Cluster.OpenBucket())
                {
                    bucket.CreateManager("default", "password").Flush();
                }

                builder.UseCachingProvider(provider);

                break;
            }

            default:
                throw new ArgumentOutOfRangeException(nameof(cachingProvider));
            }
        }
        public void OverwriteTest() {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();
            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);
        }
Пример #8
0
        public void Set_then_expire()
        {
            var key   = Guid.NewGuid().ToString();
            var value = Guid.NewGuid();

            ICacheProvider cache = new MemcachedCacheProvider("enyim.com/memcached", "region6");

            cache.Overwrite(key, value);

            cache.Expire(key);
            Guid value2;
            var  exist = cache.TryGet(key, out value2);

            Assert.IsFalse(exist);
            Assert.AreEqual(value2, Guid.Empty);
        }
Пример #9
0
        public void Save_ReferenceType_then_get()
        {
            var            key   = "key-object";
            ICacheProvider cache = new MemcachedCacheProvider("enyim.com/memcached", "region2");
            var            id1   = new Object();
            var            id2   = cache.GetOrCreate(key, _ => id1);

            Assert.AreEqual(id1, id2);

            cache.Expire(key);
            Object id3;
            var    exists = cache.TryGet(key, out id3);

            Assert.IsFalse(exists);
            Assert.AreNotEqual(id1, id3);
            Assert.AreEqual(id3, null);
        }
Пример #10
0
        public void Save_ValueType_then_get()
        {
            var            key   = "key-guid";
            ICacheProvider cache = new MemcachedCacheProvider("enyim.com/memcached", "region1");
            var            id1   = Guid.NewGuid();
            var            id2   = cache.GetOrCreate(key, _ => id1);

            Assert.AreEqual(id1, id2);

            cache.Expire(key);
            Guid id3;
            var  exists = cache.TryGet(key, out id3);

            Assert.IsFalse(exists);
            Assert.AreNotEqual(id1, id3);
            Assert.AreEqual(id3, Guid.Empty);
        }
Пример #11
0
        public void Lock_then_modify_list()
        {
            IDistributedLock memcached = new MemcachedCacheProvider("enyim.com/memcached", "region7");
            var key = Guid.NewGuid().ToString();

            {
                var list      = new List <int>();
                var except    = new Random().Next(100, 200);
                var stopwatch = Stopwatch.StartNew();

                using (memcached.ReleasableLock(key)) {
                    list.Add(0);
                }
                list.Clear();

                Parallel.For(0, except, i => {
                    using (memcached.ReleasableLock(key)) {
                        list.Add(i);
                    }
                });
                stopwatch.Stop();
                Console.WriteLine("Handle {0} times cost {1}, {2:f2} per sec.",
                                  except, stopwatch.Elapsed.TotalSeconds, except / stopwatch.Elapsed.TotalSeconds);

                Assert.AreEqual(list.Count, except);
            }

            {
                var list      = new List <int>();
                var except    = new Random().Next(1000, 2000);
                var stopwatch = Stopwatch.StartNew();

                Parallel.For(0, except, i => {
                    memcached.ReleasableLock(key);
                    list.Add(i);
                    memcached.UnLock(key);
                });

                stopwatch.Stop();
                Console.WriteLine("Handle {0} times cost {1}, {2:f2} per sec.",
                                  except, stopwatch.Elapsed.TotalSeconds, except / stopwatch.Elapsed.TotalSeconds);

                Assert.AreEqual(list.Count, except);
            }
        }
        public void OverwriteTest()
        {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();
            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);
        }
Пример #13
0
        /// <summary>
        /// 创建缓存实例
        /// </summary>
        /// <param name="providerType">缓存类型</param>
        /// <returns></returns>
        public static ICacheProvider GetCacheInstance(CacheProviderType providerType)
        {
            ICacheProvider cacheProvider = new MemoryCacheProvider();

            switch (providerType)
            {
            case CacheProviderType.LOCALMEMORYCACHE:
                cacheProvider = new MemoryCacheProvider();
                break;

            case CacheProviderType.MEMCACHEDCACHE:
                cacheProvider = new MemcachedCacheProvider();
                break;

            case CacheProviderType.ServiceStackREDIS:
                cacheProvider = new RedisCacheProvider();
                break;
            }
            return(cacheProvider);
        }
        public void OverwriteWithslidingExpirationTest() {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();

            //DateTime.Now
            Guid result;
            cacheProvider.Overwrite(key, val, TimeSpan.FromSeconds(8D));
            {
                Thread.Sleep(TimeSpan.FromSeconds(5D));
                var exist = cacheProvider.TryGet<Guid>(key, out result);
                Assert.IsTrue(exist);
                Assert.AreEqual(result, val);
            }
            {
                Thread.Sleep(TimeSpan.FromSeconds(5D));
                var exist = cacheProvider.TryGet<Guid>(key, out result);
                Assert.IsFalse(exist);
            }
        }
Пример #15
0
        public void Compatibility2()
        {
            var cache  = new MemcachedCacheProvider("Test");
            var person = new Person {
                Id      = 2,
                Name    = "Rattz",
                Address = new Address {
                    Line1 = "Haidin Shuzhoujie",
                    Line2 = "Beijing China"
                }
            };

            var key = "Person";

            cache.Overwrite(key, person, TimeSpan.FromHours(1D));
            Person personOut;
            var    exist = cache.TryGet <Person>(key, out personOut);

            Assert.IsTrue(exist);
            Assert.IsNotNull(personOut);
        }
        public void ExpireTest()
        {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

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

            Assert.AreEqual(result, val);

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

            Assert.IsTrue(exist);

            cacheProvider.Expire(key);
            Guid val2;

            exist = cacheProvider.TryGet <Guid>(key, out val2);
            Assert.IsFalse(exist);
            Assert.AreEqual(val2, Guid.Empty);
        }
        public void GetOrCreateTest() {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();
            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);
            }
        }
        public void OverwriteWithslidingExpirationTest()
        {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();

            //DateTime.Now
            Guid result;

            cacheProvider.Overwrite(key, val, TimeSpan.FromSeconds(8D));
            {
                Thread.Sleep(TimeSpan.FromSeconds(5D));
                var exist = cacheProvider.TryGet <Guid>(key, out result);
                Assert.IsTrue(exist);
                Assert.AreEqual(result, val);
            }
            {
                Thread.Sleep(TimeSpan.FromSeconds(5D));
                var exist = cacheProvider.TryGet <Guid>(key, out result);
                Assert.IsFalse(exist);
            }
        }
        public void GetOrCreateWithAbsoluteExpirationTest()
        {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();
            var result = cacheProvider.GetOrCreate <Guid>(key, () => val, DateTime.UtcNow.AddSeconds(6D));

            Assert.AreEqual(result, val);

            {
                Thread.Sleep(TimeSpan.FromSeconds(4D));
                var exist = cacheProvider.TryGet <Guid>(key, out result);
                Assert.IsTrue(exist);
                Assert.AreEqual(result, val);
            }

            {
                Thread.Sleep(TimeSpan.FromSeconds(8D));
                var exist = cacheProvider.TryGet <Guid>(key, out result);
                Assert.IsFalse(exist);
            }
        }
        public void GetOrCreateTest()
        {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();
            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);
            }
        }
Пример #21
0
        public void Compatibility2() {
            var cache = new MemcachedCacheProvider("Test");
            var person = new Person {
                Id = 2,
                Name = "Rattz",
                Address = new Address {
                    Line1 = "Haidin Shuzhoujie",
                    Line2 = "Beijing China"
                }
            };

            var key = "Person";
            cache.Overwrite(key, person, TimeSpan.FromHours(1D));
            Person personOut;
            var exist = cache.TryGet<Person>(key, out personOut);
            Assert.IsTrue(exist);
            Assert.IsNotNull(personOut);
        }
        public void ExpireTest() {
            var key = Guid.NewGuid().ToString("n");
            var val = Guid.NewGuid();

            IHttpRuntimeCacheProvider cacheProvider = new MemcachedCacheProvider();
            var result = cacheProvider.GetOrCreate<Guid>(key, () => val);
            Assert.AreEqual(result, val);

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

            cacheProvider.Expire(key);
            Guid val2;
            exist = cacheProvider.TryGet<Guid>(key, out val2);
            Assert.IsFalse(exist);
            Assert.AreEqual(val2, Guid.Empty);
        }