static async Task TestCacheAsync(RedisConnection redisConnection, string threadName) { try { var rnd = new Random((int)DateTime.Now.Ticks); var json = File.ReadAllText($"{AppDomain.CurrentDomain.BaseDirectory}sample.json"); var lockAcquisition = new RedisDLM(); var cache = new RedisCache(redisConnection, lockAcquisition); while (!TerminateTestCacheAsync) { var data = await cache.GetAsync("data1", async (name, args) => { Console.WriteLine($"{threadName} locked and creating data **************"); var myData = new MySerializeData2 { Data = json, List = new List <TestClass>(), }; for (var i = 0; i < 10; i++) { myData.List.Add(new TestClass { Id = i, Name = $"Ross: {i}" }); } return(await Task.FromResult(new CacheDataInfo <MySerializeData2> { NewCacheData = myData, KeepAlive = TimeSpan.FromSeconds(5) })); }); Console.WriteLine($"{threadName} received data"); Thread.Sleep(rnd.Next(500)); } Console.WriteLine($"{threadName} terminated successfully!"); } catch (Exception ex) { Console.WriteLine(ex); } }
static void SerializerTests(RedisConnection redisConnection) { try { var json = File.ReadAllText($"{AppDomain.CurrentDomain.BaseDirectory}sample.json"); var myData = new MySerializeData { Data1 = json, Data2 = json, List = new List <string> { json, json, json, json } }; var myData2 = new MySerializeData2 { Data = json, List = new List <TestClass>(), }; for (var i = 0; i < 10; i++) { myData2.List.Add(new TestClass { Id = i, Name = $"Ross: {i}" }); } var jsonSerializer = new JsonRedisSerializer(); var mpSerializer = new MsgPackRedisSerializer(); //var r1 = jsonSerializer.Serialize(myData2); //var r2 = mpSerializer.Serialize(myData2); //var db = redisConnection.GetDatabase(); //var list = new XRedisList<MySerializeData>(db, "test", mpSerializer); //list.Clear(); //list.Add(myData); //list.Add(myData); //list.Add(myData); const int Iteration = 1000; while (true) { Console.WriteLine("Ready..."); var key = Console.ReadKey(); Console.WriteLine(); if (key.KeyChar == 'q') { break; } else if (key.KeyChar == 'c') { Console.Clear(); } else if (key.KeyChar == 'j') { var db = redisConnection.GetDatabase(); var list = new RedisList <MySerializeData>(db, "test", jsonSerializer); list.Clear(); var sw = new Stopwatch(); sw.Start(); for (var i = 0; i < Iteration; i++) { list.Add(myData); var d = list[0]; } sw.Stop(); Console.WriteLine($"{sw.ElapsedMilliseconds} msec for {Iteration} iterations using Json serializer"); } else if (key.KeyChar == 'm') { var db = redisConnection.GetDatabase(); var list = new RedisList <MySerializeData>(db, "test", mpSerializer); list.Clear(); var sw = new Stopwatch(); sw.Start(); for (var i = 0; i < Iteration; i++) { list.Add(myData); var d = list[0]; } sw.Stop(); Console.WriteLine($"{sw.ElapsedMilliseconds} msec for {Iteration} iterations using MsgPack serializer"); } } } catch (Exception ex) { Console.WriteLine(ex); } }