public void get_sequence_num_should_work_in_concurrent_situation() { using (var redis = new RedisService()) { const string key = "SEQ_key"; Action<object> action = (object id) => { Console.WriteLine(redis.GetNextSequenceNum(key)); }; Task t1 = Task.Factory.StartNew(action, "1"); Task t2 = Task.Factory.StartNew(action, "2"); Task t3 = Task.Factory.StartNew(action, "3"); Task t4 = Task.Factory.StartNew(action, "4"); Task t5 = Task.Factory.StartNew(action, "5"); Task t6 = Task.Factory.StartNew(action, "6"); Task t7 = Task.Factory.StartNew(action, "7"); Task t8 = Task.Factory.StartNew(action, "8"); Task t9 = Task.Factory.StartNew(action, "9"); Task t0 = Task.Factory.StartNew(action, "10"); t1.Wait(); t2.Wait(); t3.Wait(); t4.Wait(); t5.Wait(); t6.Wait(); t7.Wait(); t8.Wait(); t9.Wait(); t0.Wait(); long result = redis.GetNextSequenceNum(key); Assert.Equal(11, result); redis.FlushAll(); } }