Redis存储性能测试

本文通过实验对比了在Redis中使用String类型与Hash类型存储对象数据的性能差异,并分析了各自的优缺点。实验证明,虽然读取数据时两种方式性能相近,但在存储大量数据时,Hash类型能提供更佳的效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在string类型中,不仅可以存储key-value中value是string类型,也可以存储对象类型。

 TestModel amodel = new TestModel();
 amodel.Id = 1;
 amodel.Name = "wongcony";
 amodel.Type = 1;
 amodel.Company = "nxin";

for (int i = 1; i < 1000000; i++)
{
                string keynum = i.ToString() + "key";
                client.Add(keynum, amodel);
 }

但是如果把对象类型存储在string类型中,redis自己会把对象数据转换成json字符串。当再次读取时还需要对json字符串进行反序列化。


对象类型最好存储在Hash中,可以提高存储的性能。但是读取数据时,无论是string还是hash都不消耗性能时间。

  for (int j = 1; j < 1000000; j++)
  {
                string keyhnum = j.ToString() + "hkey";
                client.SetEntryInHash(keyhnum,"Id","1");
                client.SetEntryInHash(keyhnum, "Name", "wongcony");
                client.SetEntryInHash(keyhnum, "Type", "1");
                client.SetEntryInHash(keyhnum, "Company", "nxin");
   }

TestModel amodel = new TestModel();
            amodel.Id = 1;
            amodel.Name = "wongcony";
            amodel.Type = 1;
            amodel.Company = "nxin";


            //--------------------------------------------
            //model已string类型存于redis
            Console.WriteLine("存储于String中");
            Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
            for (int i = 1; i < 1000000; i++)
            {
                string keynum = i.ToString() + "key";
                client.Add(keynum, amodel);
            }
            Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
            var am=client.Get<TestModel>("5000key");
            Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
            Console.WriteLine(am.Company);

            Console.WriteLine("存储于Hash中");

            //--------------------------------------------
            //model已hash类型存于redis
            Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
            for (int j = 1; j < 1000000; j++)
            {
                string keyhnum = j.ToString() + "hkey";
                client.SetEntryInHash(keyhnum,"Id","1");
                client.SetEntryInHash(keyhnum, "Name", "wongcony");
                client.SetEntryInHash(keyhnum, "Type", "1");
                client.SetEntryInHash(keyhnum, "Company", "nxin");
            }
            Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));
            var hm = client.GetHashValues("5000hkey");
            Console.WriteLine(DateTime.Now.ToString("HH:mm:ss:fms"));

结果图片



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值