Пример #1
0
        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);
            }
        }
Пример #2
0
        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);
            }
        }