前篇:最近在做一个将redis中大数据量进行合并缩减优化的工作,其中一项按月将数据进行合并。将一个月的数据放入一个key-value键值对中。

例:p2d20180901-3、p2d20180902-4、p2d20180903-2...p2d20180901-10  合并成 p2d201809 - $value,有两种方案。

一种使用string类型:将value值变成以“,”分隔的字符串,一种是使用hash类型:将value值变成以日期为key的数组。

现在对这两种做相应的数据分析。看执行效率。

 分析使用string 和  hash 类型合并一个月的数据,两者性能的差别。50000数据写入,20000数据的随机读取。
1、             本地127.0.0.1 (均值)     线上服务器IP(均值)
     string类型写入       18-44s (31.8s)                51-61s(57s)
     hash类型写入        26-53s (37.2s)                50-61s (58s)
     string类型读取       20-25s (22.4s)             18-25s (22s)
     hash类型读取        24-26s(25s)               19-26s(26.2s)
  通过数据可以分析得出当value值为简单的数组时  使用string类型,无论是本地还是线上服务器都优于hash类型,故使用string类型作为数据合并工作。
  当然这里的前提条件是原先的value值为简单的数组或字符,写入和读取中字符串和数组之间转换以及内存占用量不大时,使用string类型;如果value 值为图片,长度很大的字符串...等大数据量时,使用hash类型更为简便,性能更高。
 
2、在随机读取中使用了mt_rand(),而不适用rand(),他们两者的区别:
mt_rand()是更好地随机数生成器,因为它跟rand()相比播下了一个更好地随机数种子;而且性能上比rand()快4倍,mt_getrandmax()所表示的数值范围也更大
getrandmax():32767  2^15-1
mt_getrandmax():2147483647  2^31-1

无符号长整型的最大值是2^32-1,即42E,但是这种类型无法表示负数,长整型的负数可以表示到-2147483648)

http://www.w3school.com.cn/php/func_math_mt_getrandmax.asp 上得输出类似数据 3147483649 的答案有待考证?理论上不可能大于最大值2^32-1

redis中关于使用string类型还是hash类型的更多相关文章

  1. Redis 笔记与总结2 String 类型和 Hash 类型

    Linux 版本信息: cat /etc/issue 或cat /etc/redhat-release(Linux查看版本当前操作系统发行版信息) CentOS release 6.6 (Final) ...

  2. 02_NoSQL数据库之Redis数据库:string类型和hash类型

     Strings类型及操作 String是最简单的类型,一个key对应一个Value,String类型是二进制安全的.Redis的String可以包含任何数据,比如jpg图片或者序列化的对象. S ...

  3. 第一节: Redis之String类型和Hash类型的介绍和案例应用

    一. String类型基础 1.类型介绍 典型的Key-Value集合,如果要存实体,需要序列化成字符串,获取的时候需要反序列化一下. 2. 指令Api说明 3.常用Api说明 (1).StringS ...

  4. 第二课补充01——redis-cli命令行详解、string类型、list类型、hash类型命令操作详解

    一. redis-cli命令行参数 1.-x参数:从标准输入读取一个参数: [问题] [解决] 因为echo命令是默认带有回车\n的,不带回车需要echo –n命令: echo -n "ha ...

  5. Redis 中可以存储的五种基本类型

    具体介绍 数字还是字符? String(字符串) 二进制安全 可以包含任何数据,比如jpg图片或者序列化的对象,一个键最大能存储512M --- Hash(字典) 键值对集合,即编程语言中的Map类型 ...

  6. Redis学习篇(二)之Hash类型及其操作

    HSET 作用: 将哈希表key中的域field设置成指定的value 语法:HSET key field value HSET userinfo name 'zhangsan' HSET useri ...

  7. redis中的字典结构是怎样的?

    点赞再看,养成习惯,微信搜索「小大白日志」关注这个搬砖人. 文章不定期同步公众号,还有各种一线大厂面试原题.我的学习系列笔记. 基础概念 redis支持的5种数据类型中,有hash类型,hash类型的 ...

  8. Redis 使用命令行的方式 获取 hash type key 的value值

    1. 之前只是非常简单的看了下 get key 和 set key 但是这样 设置的 key value 应该是都 string 类型的 2. 但是没考虑过其他类型的 是如何获取 相关内容的 ,一直 ...

  9. Redis中Value使用hash类型的效率是普通String的两倍

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

随机推荐

  1. mvc使用mongodb时objectId序列化与反序列化

    前面有写使用自己的mvc 序列化工具即jsonNetResult.我这里结合之前写的jsonNetResult来做一个Json序列化工具,而且序列化ObjectId成一个字符串.详细代码例如以下 us ...

  2. iOS中的成员变量,实例变量,属性变量

    在ios第一版中: 我们为输出口同时声明了属性和底层实例变量,那时,属性是oc语言的一个新的机制,并且要求你必须声明与之对应的实例变量,例如: 注意:(这个是以前的用法) @interface MyV ...

  3. CloudEngine 6800基础配置-01_常见密码操作

    由于工作原因,现在从事公有云. 这简直就是个笑话,12年后又回来学网络知识. # 设置系统的日期.时间和时区   <HUAWEI> clock timezone BJ add 08:00: ...

  4. LeetCode 349. Intersection of Two Arrays (两个数组的相交)

    Given two arrays, write a function to compute their intersection. Example:Given nums1 = [1, 2, 2, 1] ...

  5. LeetCode 8. String to Integer (atoi) (字符串到整数)

    Implement atoi to convert a string to an integer. Hint: Carefully consider all possible input cases. ...

  6. css高级:font-size

    body{ font:62.5%/1.6em "Lucida Grande",Verdana,Geneva,Helvetica,Arial,sansserif; }//font-s ...

  7. MCU低功耗设计(三)产品

    关键词: 低功耗设计, 无线通信产品, LoRa长距离, Contiki系统, 能耗实时跟踪 引言: 能耗对电池供电的产品来说是一个重大问题.一旦电能耗尽设备将"罢工".在< ...

  8. 60.extjs-布局 (在column布局中使用fieldset 和 在fieldset中使用column布局)

    转自:https://blog.csdn.net/snn1410/article/details/8817821/ 在标准的html中,需要把输入项都放到fieldset中,一次来显示分组结构.虽然E ...

  9. django入门与实践 3-1 环境搭建

    Python 2.7 .Django对2.7.3.5.3.4都是支持的. https://www.djangoproject.com/download/ django对python的兼容情况 pip安 ...

  10. PCB genesis短槽加引导孔实现方法

    一.何为短槽 短槽通常定义:槽长小于2倍槽宽      如:槽长1.8mm,槽宽1.0mm 二.为什么要加短槽加引孔呢 短槽孔在钻孔时孔易偏斜导致槽长偏短, 当槽长宽比越小,则受力越不均匀,在钻第2个 ...