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的过程中,记下来给初学的朋友参考,日后自己也好查阅。

  • 相关阅读:
    html+css设计简单的博客首页
    js基础知识总结(一)
    css基础知识总结
    HTML基础知识
    链表常见题目--附具体分析和代码
    程序的内存分配
    python线程互斥锁递归锁死锁
    动态规划算法python实现
    ECMAScript 6 开篇准备
    弦生成器
  • 原文地址:https://www.cnblogs.com/mszhangxuefei/p/redis-01.html
Copyright © 2011-2022 走看看