前篇:最近在做一个将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. POJ 2485 Highways 最小生成树 (Kruskal)

    Description The island nation of Flatopia is perfectly flat. Unfortunately, Flatopia has no public h ...

  2. JavaScript解析顺序和变量作用域

    JavaScript基础之变量作用域. 一. 1.全局变量:全局变量的意思就是,在代码的不论什么地方都能够訪问到.注意:未定义 直接赋值的变量拥有全局属性. 2.局部变量:局部变量的意思就是,变量的作 ...

  3. 关于OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2个人理解心得

    近期在用C#写一个创建Excel并将数据导出到Excel的WinForm程序, 让我对OleDB连接Excel的Extended Properties(扩展属性)HDR=YES; IMEX=2有了深刻 ...

  4. user agent stylesheet 解决方法

    写了一个写了一个页面字体一直是加粗.原来是 strong,b{ user agent stylesheet font-weight:bold; } 引起的 解决方法:又一次定义 strong,b{ f ...

  5. MongoDB集群——副本集

    1. 副本集的结构及原理 副本集包括三种节点:主节点.从节点.仲裁节点.主节点负责处理客户端请求,读.写数据, 记录在其上所有操作的oplog: 从节点定期轮询主节点获取这些操作,然后对自己的数据副本 ...

  6. bzoj 1822 冷冻波

    题目大意: 在游戏中,巫妖是一种强大的英雄,它的技能Frozen Nova每次可以杀死一个小精灵 我们认为,巫妖和小精灵都可以看成是平面上的点. 当巫妖和小精灵之间的直线距离不超过R,且巫妖和小精灵的 ...

  7. 对腾讯云服务器linux系统进行分区格式化操作

  8. 云栖社区> > 正文 永久免费SSL安全证书Letsencrypt安装使用方法

    ./letsencrypt-auto certonly --standalone --email admin@thing.com -d thing.com -d www.thing.com

  9. PCB javascript实现个税5000计算

    个税调整为5000计划实施是今年10月份.而明年一月份全面实施, 马上快到5000个税实施的日子了,当到了个税实施日子时,必定网络会产生热点,这个时候需要就是蹭热点的时候到来时. 全国网友肯定都会关心 ...

  10. JavaScript(JS)的简单使用

    一.什么是JS(Javascript)? Javascript是一种脚本语言,被广泛用于Web应用开发,常用来为网页添加各式各样的功能,为用户提供更加流畅的浏览效果. Javascript严格区分大小 ...