public void ItemExpires_RemovedFromCache()
        {
            var redis = new RedisConnectionManager();
            // this is just testing the built in expiry
            var config = new CacheConfiguration(redis);

            var cache = new RedisCacheProvider(config); 
            cache.Logger = new TestRedisLogger();

            string key = "TagCacheTests:ItemExpires_RemovedFromCache";
            String value = "Hello World!";
            DateTime expires = DateTime.Now.AddSeconds(3);

            string tag1 = "tag1";
            string tag2 = "tag2";

            cache.Set(key, value, expires, new List<string> { tag1, tag2 });
            var result = cache.Get<String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);
            
            Thread.Sleep(1000);

            result = cache.Get<String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);

            Thread.Sleep(2500);

            result = cache.Get<String>(key);

            Assert.IsNull(result);  
        }
Exemple #2
0
        public static void UseRedisProvider()
        {
            var cacheProvider = new RedisCacheProvider();

            cacheProvider.Set("k-name", "Redis Client");
            Console.WriteLine(cacheProvider.Get <string>("k-name"));
        }
Exemple #3
0
        public void Get_AddedObject_ReturnsValue()
        {
            var redis = new RedisConnectionManager();

            var configuration = GetCacheConfiguration(redis);
            var cache         = new RedisCacheProvider(configuration);

            cache.Logger = new TestRedisLogger();
            string key   = "TagCacheTests:Add";
            var    value = new TestObject()
            {
                Foo   = "Hello",
                Bar   = "World",
                Score = 11
            };
            DateTime expires = new DateTime(2099, 12, 11);

            cache.Set(key, value, expires);
            var result = cache.Get <TestObject>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value.Foo, result.Foo);
            Assert.AreEqual(value.Bar, result.Bar);
            Assert.AreEqual(value.Score, result.Score);
        }
        public void AddValueToCache_NoExpiration()
        {
            var redisCacheProvider = new RedisCacheProvider(connection.GetDatabase(), connection.GetServer("127.0.0.1:6379"));

            redisCacheProvider.Add(Key, Value);
            var valueFromCache = redisCacheProvider.Get <string>(Key);

            Assert.Equal(Value, valueFromCache);
        }
        public void AddWithSlidingLifetime_ExpireAfter20Seconds()
        {
            var redisCacheProvider = new RedisCacheProvider(connection.GetDatabase(), connection.GetServer("127.0.0.1:6379"));

            redisCacheProvider.AddWithSlidingLifetime(Key, Value, new TimeSpan(0, 0, 20));
            var valueFromCache = redisCacheProvider.Get <string>(Key);

            Assert.Equal(Value, valueFromCache);
        }
        public void EnsureCacheWithExactLifeTime_ReturnCorrectObject()
        {
            var redisCacheProvider = new RedisCacheProvider(connection.GetDatabase(), connection.GetServer("127.0.0.1:6379"));

            redisCacheProvider.EnsureWithExactLifetime(Key, new TimeSpan(0, 0, 20), () => { return(Value); });
            var valueFromCache = redisCacheProvider.Get <string>(Key);

            Assert.Equal(Value, valueFromCache);
        }
Exemple #7
0
        public ActionResult Index()
        {
            if (Logger == null)
            {
                Logger = new ListLogger();
            }

            var stopwatch = new Stopwatch();

            var result = new MyViewModel();

            stopwatch.Start();
            var cache = new RedisCacheProvider(RedisConnection);

            cache.Logger = Logger;
            stopwatch.Stop();
            result.SetupTimeMs = stopwatch.ElapsedMilliseconds;

            stopwatch.Reset();
            stopwatch.Start();
            var item = cache.Get <Models.SampleModel>("models:sample1");

            if (item == null)
            {
                item = new SampleModel()
                {
                    DateOfBirth = DateTime.Now,
                    Name        = "Hello",
                    Surname     = "World",
                    Other       = new List <OtherModels>()
                    {
                        new OtherModels()
                        {
                            Foo = 1, Bar = 20.928
                        },
                        new OtherModels()
                        {
                            Foo = 31, Bar = 30.3328
                        },
                    }
                };
                cache.Set("models:sample1", item, DateTime.Now.AddSeconds(5), new List <string>()
                {
                    "Test1", "Test2"
                });
            }
            stopwatch.Stop();
            result.LoadTimeMs = stopwatch.ElapsedMilliseconds;

            result.Data = item;

            return(View(result));
        }
Exemple #8
0
        public void Get_MissingKey_ReturnsNull()
        {
            var redis = new RedisConnectionManager();
            var cache = new RedisCacheProvider(redis);

            cache.Logger = new TestRedisLogger();
            string key = "TagCacheTests:NoValueHere." + DateTime.Now.Ticks;

            var result = cache.Get <String>(key);

            Assert.IsNull(result);
        }
Exemple #9
0
        public void Remove_AddedKey_ReturnsNull()
        {
            var redis = new RedisConnectionManager();
            var cache = new RedisCacheProvider(redis);

            cache.Logger = new TestRedisLogger();
            string   key     = "TagCacheTests:Add";
            String   value   = "Hello World!";
            DateTime expires = new DateTime(2099, 12, 11);

            cache.Set(key, value, expires);

            var result = cache.Get <String>(key);

            Assert.AreEqual(value, result);

            cache.Remove(key);
            result = cache.Get <String>(key);

            Assert.IsNull(result);
        }
Exemple #10
0
        public void ItemExpires_RemovedFromCache()
        {
            var redis = new RedisConnectionManager();
            // this is just testing the built in expiry
            var config = new CacheConfiguration(redis);

            var cache = new RedisCacheProvider(config);

            cache.Logger = new TestRedisLogger();

            string   key     = "TagCacheTests:ItemExpires_RemovedFromCache";
            String   value   = "Hello World!";
            DateTime expires = DateTime.Now.AddSeconds(3);

            string tag1 = "tag1";
            string tag2 = "tag2";

            cache.Set(key, value, expires, new List <string> {
                tag1, tag2
            });
            var result = cache.Get <String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);

            Thread.Sleep(1000);

            result = cache.Get <String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);

            Thread.Sleep(2500);

            result = cache.Get <String>(key);

            Assert.IsNull(result);
        }
        public void Test_RedisCacheProvider_Get()
        {
            //Arrange.
            RedisCacheProvider cacheObj = new RedisCacheProvider();

            //Act.
            int    expected = 1000;
            int    actual   = 0;
            string key      = "__RedisCacheUnitTest1_TestData_liveTime";

            actual = Convert.ToInt32(cacheObj.Get(key));

            //Assert.
            Assert.AreEqual(expected, actual);
        }
Exemple #12
0
        public void Get_ExpiredDate_RemovesFromCache()
        {
            var redis = new RedisConnectionManager();
            var cache = new RedisCacheProvider(redis);

            cache.Logger = new TestRedisLogger();
            string   key     = "TagCacheTests:Add";
            String   value   = "Hello World!";
            DateTime expires = new DateTime(2000, 12, 11);

            cache.Set(key, value, expires);
            var result = cache.Get <String>(key);

            Assert.IsNull(result);
        }
        public ActionResult Index()
        {
            if (Logger == null)
            {
                Logger = new ListLogger();
            }

            var stopwatch = new Stopwatch();

            var result = new MyViewModel();
            
            stopwatch.Start();
            var cache = new RedisCacheProvider(RedisConnection);
            cache.Logger = Logger;
            stopwatch.Stop();
            result.SetupTimeMs = stopwatch.ElapsedMilliseconds;

            stopwatch.Reset();
            stopwatch.Start();
            var item = cache.Get<Models.SampleModel>("models:sample1");
            if (item == null)
            {
                item = new SampleModel()
                       {
                           DateOfBirth = DateTime.Now,
                           Name = "Hello",
                           Surname = "World",
                           Other = new List<OtherModels>()
                                   {
                                       new OtherModels(){Foo = 1, Bar = 20.928},
                                       new OtherModels(){Foo = 31, Bar = 30.3328},
                                   } 
                       };
                cache.Set("models:sample1", item, DateTime.Now.AddSeconds(5), new List<string>(){"Test1", "Test2"});
            }
            stopwatch.Stop();
            result.LoadTimeMs = stopwatch.ElapsedMilliseconds;

            result.Data = item;

            return View(result);
        }
Exemple #14
0
        public void Get_ExpiredDate_RemovesTags()
        {
            var redis  = new RedisConnectionManager();
            var cache  = new RedisCacheProvider(redis);
            var config = NewCacheConfiguration(redis);

            cache.Logger = new TestRedisLogger();
            string   key     = "TagCacheTests:Add";
            String   value   = "Hello World!";
            var      tag     = "remove tag";
            DateTime expires = new DateTime(2000, 12, 11);

            cache.Set(key, value, expires, tag);
            var test = cache.Get <String>(key);

            var tagManager = new RedisTagManager(config.CacheItemFactory);

            var result = tagManager.GetKeysForTag(newRedisClient(), tag);

            Assert.AreEqual(result.Count(x => x == tag), 0);
        }
Exemple #15
0
        static void Main(string[] args)
        {
            var key = "person";

            using (var redis = new RedisCacheProvider(new DataConverter(), "localhost"))
            {
                var person = new Person
                {
                    Name = "Alex",
                    Age  = 11
                };

                redis.Set(key, person);

                person = redis.Get <Person>(key);

                Console.WriteLine(person.Name);
                Console.WriteLine(person.Age);
            }

            Console.ReadKey();
        }
        static void Main(string[] args)
        {
            var connection = ConnectionMultiplexer.Connect("127.0.0.1:6379,abortConnect=false");
            var cache      = new RedisCacheProvider(connection.GetDatabase());
            var key        = "order_1";

            var order = new Models.Order
            {
                OrderId    = 1,
                TotalPrice = 100,
                Products   = new List <Product>
                {
                    new Product {
                        Id = 1, Name = "Test Product", Price = 100
                    }
                }
            };

            cache.Add <Models.Order>(key, order);

            var cachedOrder = cache.Get <Models.Order>(key);
        }
Exemple #17
0
        protected static void RedisCache_Absolute_Expire(RedisCacheProvider redisCache)
        {
            Console.WriteLine("Sync test absolute expire start...");
            Console.Write(Environment.NewLine);

            var key     = Guid.NewGuid().ToString("N");
            var value   = "something";
            var options = CacheEntryOptionsFactory.AbSolute().Timeout(TimeSpan.FromMilliseconds(300));

            redisCache.Set(key, value, options);
            Console.WriteLine(string.Format("Set key:{0} with value:{1} by expire:{2}",
                                            key, value, options.ExpirationTimeout.TotalMilliseconds));

            Console.WriteLine(string.Format("Get key:{0} with value:{1}", key, redisCache.Get <string>(key)));

            Thread.Sleep(300);
            Console.WriteLine(string.Format("After expire:{0} get key:{1} with value:{2}",
                                            options.ExpirationTimeout.TotalMilliseconds, key, redisCache.Get <string>(key)));

            Console.Write(Environment.NewLine);
            Console.WriteLine("Sync test absolute expire end...");
        }
        public void Get_AddedObject_ReturnsValue()
        {
            var redis = new RedisConnectionManager();
            var cache = new RedisCacheProvider(redis);
            cache.Logger = new TestRedisLogger();
            string key = "TagCacheTests:Add";
            var value = new TestObject()
                           {
                               Foo = "Hello",
                               Bar = "World",
                               Score = 11
                           };
            DateTime expires = new DateTime(2099, 12, 11);

            cache.Set(key, value, expires);
            var result = cache.Get<TestObject>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value.Foo, result.Foo);
            Assert.AreEqual(value.Bar, result.Bar);
            Assert.AreEqual(value.Score, result.Score);
        }
        public void Get_ExpiredDate_RemovesTags()
        {
            var redis = new RedisConnectionManager();
            var cache = new RedisCacheProvider(redis);
            var config = NewCacheConfiguration(redis);
            cache.Logger = new TestRedisLogger();
            string key = "TagCacheTests:Add";
            String value = "Hello World!";
            var tag = "remove tag";
            DateTime expires = new DateTime(2000, 12, 11);

            cache.Set(key, value, expires, tag);
            var test = cache.Get<String>(key);

            var tagManager = new RedisTagManager(config.CacheItemFactory);

            var result = tagManager.GetKeysForTag(newRedisClient(), tag);

            Assert.AreEqual(result.Count(x => x == tag), 0);
        }
Exemple #20
0
        public IActionResult TestGetRedis()
        {
            var result = _cacheProvider.Get <string>("Hello");

            return(Content(result ?? "Redis item is not found!"));
        }
        public void Get_MissingKey_ReturnsNull()
        {
            var redis = new RedisConnectionManager();
            var cache = new RedisCacheProvider(redis);
            cache.Logger = new TestRedisLogger();
            string key = "TagCacheTests:NoValueHere." + DateTime.Now.Ticks;

            var result = cache.Get<String>(key);

            Assert.IsNull(result);
        }
        public void Get_AddedKey_ReturnsValue()
        {
            var redis = new RedisConnectionManager();
            var cache = new RedisCacheProvider(redis);
            cache.Logger = new TestRedisLogger();
            string key = "TagCacheTests:Add";
            String value = "Hello World!";
            DateTime expires = new DateTime(2099, 12, 11);

            cache.Set(key, value, expires);
            var result = cache.Get<String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);
        }
        public void ItemExpires_Tag_RemovedFromCache()
        {
            // this is testing that when expiry happens, the events kick in and remove the tags
            // see RedisExpireHandler

            var redis = new RedisConnectionManager();
            var config = new CacheConfiguration(redis);

            var cache = new RedisCacheProvider(config);
            var client = newRedisClient(config.RedisClientConfiguration);

            cache.Logger = new TestRedisLogger();
            Console.WriteLine("Start Logger");

            string key = "TagCacheTests:ItemExpires_Tag_RemovedFromCache";
            String value = "Hello World!";
            DateTime expires = DateTime.Now.AddSeconds(3);
            
            string tag1 = "tag1001";
            string tag2 = "tag1002";

            cache.Set(key, value, expires, new List<string>{tag1, tag2});

            // first check everything has been set
            var result = cache.Get<String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);

            var keysForTag1 = client.GetKeysForTag(tag1);
            Assert.IsNotNull(keysForTag1);
            Assert.IsTrue(keysForTag1.Any(x => x == key));

            var tagsForKey = client.GetTagsForKey(key);
            Assert.IsNotNull(tagsForKey);
            Assert.IsTrue(tagsForKey.Any(x => x == tag1));
            Assert.IsTrue(tagsForKey.Any(x => x == tag2));

            // wait a while
            Thread.Sleep(1000);

            // check it has not expired yet
            result = cache.Get<String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);

            keysForTag1 = client.GetKeysForTag(tag1);
            Assert.IsNotNull(keysForTag1);
            Assert.IsTrue(keysForTag1.Any(x => x == key));

            tagsForKey = client.GetTagsForKey(key);
            Assert.IsNotNull(tagsForKey);
            Assert.IsTrue(tagsForKey.Any(x => x == tag1));
            Assert.IsTrue(tagsForKey.Any(x => x == tag2));

            // now wait until it should have been removed
            Thread.Sleep(2500);
            
            // now check its all been removed
            result = cache.Get<String>(key);

            Assert.IsNull(result);
            
            keysForTag1 = client.GetKeysForTag(tag1);
            Assert.IsNotNull(keysForTag1);
            Assert.IsFalse(keysForTag1.Any(x => x == key));

            tagsForKey = client.GetTagsForKey(key);
            Assert.IsNotNull(tagsForKey);
            Assert.IsFalse(tagsForKey.Any(x => x == tag1));
            Assert.IsFalse(tagsForKey.Any(x => x == tag2));

        }
        public void Get_ExpiredDate_RemovesFromCache()
        {
            var redis = new RedisConnectionManager();
            var cache = new RedisCacheProvider(redis);
            cache.Logger = new TestRedisLogger();
            string key = "TagCacheTests:Add";
            String value = "Hello World!";
            DateTime expires = new DateTime(2000, 12, 11);

            cache.Set(key, value, expires);
            var result = cache.Get<String>(key);

            Assert.IsNull(result);
        }
Exemple #25
0
        public void ItemExpires_Tag_RemovedFromCache()
        {
            // this is testing that when expiry happens, the events kick in and remove the tags
            // see RedisExpireHandler

            var redis  = new RedisConnectionManager();
            var config = new CacheConfiguration(redis);

            var cache  = new RedisCacheProvider(config);
            var client = newRedisClient(config.RedisClientConfiguration);

            cache.Logger = new TestRedisLogger();
            Console.WriteLine("Start Logger");

            string   key     = "TagCacheTests:ItemExpires_Tag_RemovedFromCache";
            String   value   = "Hello World!";
            DateTime expires = DateTime.Now.AddSeconds(3);

            string tag1 = "tag1001";
            string tag2 = "tag1002";

            cache.Set(key, value, expires, new List <string> {
                tag1, tag2
            });

            // first check everything has been set
            var result = cache.Get <String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);

            var keysForTag1 = client.GetKeysForTag(tag1);

            Assert.IsNotNull(keysForTag1);
            Assert.IsTrue(keysForTag1.Any(x => x == key));

            var tagsForKey = client.GetTagsForKey(key);

            Assert.IsNotNull(tagsForKey);
            Assert.IsTrue(tagsForKey.Any(x => x == tag1));
            Assert.IsTrue(tagsForKey.Any(x => x == tag2));

            // wait a while
            Thread.Sleep(1000);

            // check it has not expired yet
            result = cache.Get <String>(key);

            Assert.IsNotNull(result);
            Assert.AreEqual(value, result);

            keysForTag1 = client.GetKeysForTag(tag1);
            Assert.IsNotNull(keysForTag1);
            Assert.IsTrue(keysForTag1.Any(x => x == key));

            tagsForKey = client.GetTagsForKey(key);
            Assert.IsNotNull(tagsForKey);
            Assert.IsTrue(tagsForKey.Any(x => x == tag1));
            Assert.IsTrue(tagsForKey.Any(x => x == tag2));

            // now wait until it should have been removed
            Thread.Sleep(2500);

            // now check its all been removed
            result = cache.Get <String>(key);

            Assert.IsNull(result);

            keysForTag1 = client.GetKeysForTag(tag1);
            Assert.IsNotNull(keysForTag1);
            Assert.IsFalse(keysForTag1.Any(x => x == key));

            tagsForKey = client.GetTagsForKey(key);
            Assert.IsNotNull(tagsForKey);
            Assert.IsFalse(tagsForKey.Any(x => x == tag1));
            Assert.IsFalse(tagsForKey.Any(x => x == tag2));
        }