Redis中Value使用hash类型的效率是普通String的两倍 - Gabriel Zhang

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

主要面临的是使用通常的String仍是使用Hash。原本直觉觉得使用String的效率会高,由于Redis在Memcached的基础上升级了,扩展的Value类型应该是为了方便。没想到在效率上也有了很大的提高。dom

测试的环境是一台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);

 

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

 

相差2倍的程度。设计

正在学习使用Redis的过程当中,记下来给初学的朋友参考,往后本身也好查阅。code

相关文章
相关标签/搜索