zoukankan      html  css  js  c++  java
  • Redis中Value使用hash类型的效率是普通String的两倍

    什么Redis? 点击这里

    最近要开发的一个项目是分布式缓存组件,解决参数缓存高效获取的问题。参数达到了500万级别,刚刚开始了解Redis。做设计的时候考虑到Value使用哪种类型的问题?

    主要面临的是使用一般的String还是使用Hash。本来直觉以为使用String的效率会高,因为Redis在Memcached的基础上升级了,扩展的Value类型应该是为了方便。没想到在效率上也有了很大的提升。

    测试的环境是一台Linux物理机,安装了最新版的Redis2.6. 测试数据如下:

    String类型的数据和Hash类型的数据各100w(前100万为String,后100万为Hash),随机取100次数据,比较两种的耗时;

    测试的代码如下:

                RedisClient client = new RedisClient("192.168.1.59", 6379);
                Stopwatch sw = Stopwatch.StartNew();
                for (int i = 0; i < 100; i++)
                {
                    client.Get(new Random().Next(1000000).ToString());

                }
                sw.Stop();
                Console.WriteLine("使用String类型:"+sw.ElapsedMilliseconds);

                sw.Restart();
                for (int i = 0; i < 100; i++)
                {
                    long t = new Random().Next(1000000, 199999998);
                    client.GetValueFromHash(t.ToString(), (t + 1).ToString());

                }
                sw.Stop();
                Console.WriteLine("使用Hash类型:"+sw.ElapsedMilliseconds);

    虽然都是毫秒级别,但是结果对比下就一目了然,我应该选择那种类型:

    相差2倍的程度。

    正在学习使用Redis的过程中,记下来给初学的朋友参考,日后自己也好查阅。

  • 相关阅读:
    scp命令详解
    linux下不同服务器间数据传输(rcp,scp,rsync,ftp,sftp,lftp,wget,curl)
    详解代理自动配置 PAC
    linux卸载
    VMware里克隆出来的CentOS Linux device eth0 does not seem to be present, delaying initialization
    CentOS系统更换软件安装源yum
    kali开启禁止或删除ssh 开机启动
    7天玩转 ASP.NET MVC
    C#高级编程42章 MVC
    C#高级编程(32章)ADO.net
  • 原文地址:https://www.cnblogs.com/mszhangxuefei/p/redis-01.html
Copyright © 2011-2022 走看看