public void Lock_then_modify_list()
        {
            IDistributedLock memcached = new RedisCacheProvider(
                ConfigurationManager.AppSettings.Get("cache:redis"), "region7");
            var key = "DistributedLock1";

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

                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);
            }
        }