场景一:对单一键大并发量增加(INC)操作,模拟对热点产品的库存修改

测试点:
   原子性,保证最后的键值等于所有键值增加操作的总和性能,
   保证在大并发量下写操作的性能没有大的降低

线程数 100次INC操作的平均时间 服务端数据
10 140 instantaneous_ops_per_sec(每秒处理指令数):342
instantaneous_input_kbps(每秒读字节数):10.70
instantaneous_output_kbps(每秒写字节数):1.90
used_cpu_sys(系统CPU使用量):0.05
used_cpu_user(用户CPU使用量):0.03
50 560 instantaneous_ops_per_sec(每秒处理指令数):2780
instantaneous_input_kbps(每秒读字节数):86.89
instantaneous_output_kbps(每秒写字节数):18.20
used_cpu_sys(系统CPU使用量):0.48
used_cpu_user(用户CPU使用量):0.37
100 1050 instantaneous_ops_per_sec(每秒处理指令数):5766
instantaneous_input_kbps(每秒读字节数):180.22
instantaneous_output_kbps(每秒写字节数):38.60
used_cpu_sys(系统CPU使用量):1.31
used_cpu_user(用户CPU使用量):0.52
120 1400 instantaneous_ops_per_sec(每秒处理指令数):6857
instantaneous_input_kbps(每秒读字节数):214.29
instantaneous_output_kbps(每秒写字节数):46.87
used_cpu_sys(系统CPU使用量):2.51
used_cpu_user(用户CPU使用量):0.81
150 1570 instantaneous_ops_per_sec(每秒处理指令数):8350
instantaneous_input_kbps(每秒读字节数):260.95
instantaneous_output_kbps(每秒写字节数):58.74
used_cpu_sys(系统CPU使用量):4.04
used_cpu_user(用户CPU使用量):1.13

结论:
   客户端100次操作的时间随着线程数增加而增加,但是服务端的处理量并没有达到极限,CPU的使用量也不高,可见REDIS处理高并发请求没有问题.
Jvisualvm 分析结果:客户端处理时间长主要是由于线程切换的代价和网络开销

场景二:数据持久化测试

数据占用内存大小:
         400000条数据,键长度20,数据长度1.   总共占用 28.90M
         2000000条数据,键长度20,数据长度1. 总共占用138.55M

持久化模式 数据量 客户端时间 服务端数据

RDB模式,数据快照定期写入磁盘

规则:每900秒如果数据改变超过1次则写入磁盘

每300秒如果数据改变超过10次则写入磁盘

每60秒如果数据改变超过10000次则写入磁盘

400000次写 148397 ms instantaneous_ops_per_sec(每秒处理指令数):2538
instantaneous_input_kbps(每秒读字节数):116.52
instantaneous_output_kbps(每秒写字节数):12.40
latest_fork_usec:614
2000000次写 750721ms instantaneous_ops_per_sec(每秒处理指令数):2705
instantaneous_input_kbps(每秒读字节数):126.80
instantaneous_output_kbps(每秒写字节数):13.21
latest_fork_usec:889
数据不持久化 400000次写 145062 ms instantaneous_ops_per_sec(每秒处理指令数):2840
instantaneous_input_kbps(每秒读字节数):130.38
instantaneous_output_kbps(每秒写字节数):13.87
2000000次写 746384ms instantaneous_ops_per_sec(每秒处理指令数):2723
instantaneous_input_kbps(每秒读字节数):127.68
instantaneous_output_kbps(每秒写字节数):13.30
数据复制到一个节点 400000次写 210540ms

instantaneous_ops_per_sec(每秒处理指令数):2222

instantaneous_input_kbps(每秒读字节数):102.00

instantaneous_output_kbps(每秒写字节数):112.83

2000000次写 9249390ms

instantaneous_ops_per_sec(每秒处理指令数):2126

instantaneous_input_kbps(每秒读字节数):99.69

instantaneous_output_kbps(每秒写字节数):110.05

AOF 模式

Fysnc per second

操作以日志方式写入磁盘,每秒将日志从磁盘缓冲区刷入硬盘

400000次写 158809ms

instantaneous_ops_per_sec(每秒处理指令数):2169

instantaneous_input_kbps(每秒读字节数):99.59

instantaneous_output_kbps(每秒写字节数):10.59

2000000次写

765037ms

instantaneous_ops_per_sec(每秒处理指令数):2656

instantaneous_input_kbps(每秒读字节数):124.54

instantaneous_output_kbps(每秒写字节数):12.97

AOF 模式:

Fsync always

操作以日志方式写入磁盘,每次操作将日志从磁盘缓冲刷入硬盘

400000次写 583053ms

instantaneous_ops_per_sec(每秒处理指令数):642

instantaneous_input_kbps(每秒读字节数):29.49

instantaneous_output_kbps(每秒写字节数):3.14

2000000次写 3154548ms

instantaneous_ops_per_sec(每秒处理指令数):613

instantaneous_input_kbps(每秒读字节数):28.77

instantaneous_output_kbps(每秒写字节数):2.99

AOF 模式:

Fsync never

操作以日志方式写入磁盘,由操作系统决定何时将日志从磁盘缓冲刷入硬盘

400000次写

152612ms

instantaneous_ops_per_sec(每秒处理指令数):2725

instantaneous_input_kbps(每秒读字节数):125.07

instantaneous_output_kbps(每秒写字节数):13.30

2000000次写 769203ms

instantaneous_ops_per_sec(每秒处理指令数):2710

instantaneous_input_kbps(每秒读字节数):127.03

instantaneous_output_kbps(每秒写字节数):13.23

RDB模式,数据快照定期写入磁盘

规则:每900秒如果数据改变超过1次则写入磁盘

每300秒如果数据改变超过10次则写入磁盘

每60秒如果数据改变超过10000次则写入磁盘

使用PIPELINE 批量操作,每10000条COMMIT 一次

400000次写 1429ms

instantaneous_ops_per_sec(每秒处理指令数):131611

instantaneous_input_kbps(每秒读字节数):6040.77

instantaneous_output_kbps(每秒写字节数):641.57

2000000次写 6740ms

instantaneous_ops_per_sec(每秒处理指令数):161782

instantaneous_input_kbps(每秒读字节数):7583.55

instantaneous_output_kbps(每秒写字节数):791.00

结论:

  • RDB模式和不持久化性能差别并非很大,主要是RDB通过FORK的方式来复制数据,对主进程的读写没有影响.但是单次FORK的开销较大,而且FORK时会消耗两倍的内存

  • AOF模式每秒FSYNC和操作系统FSYNC的差别并不大,但是总是FSYNC的性能急剧下降,每秒FSYNC是一个比较合适的选择,最多丢失1秒钟的数据,性能也不错

  • 数据量大对写操作的性能并没有太多影响

  • 实测中日志主从复制对于性能有不小的影响,但由于是单机模拟集群测试,硬件和网络都是共享的,数据可能不准,建议在实际环境中再测试

  • 4百万数据读性能仍然在5到7毫秒/条

  • 数据恢复: 4百万数据,RDB模式初始化需要大约4.12秒时间 (可从redis.log中查到), AOF模式初始化需要大约6.216秒时间

  • PIPELINE批量处理模式对于写性能的提升是巨大的,但是使用场景比较有限,一般可以用于初始REDIS数据

转载于:https://blog.51cto.com/shadowisper/1669464

REDIS的几个测试结果相关推荐

  1. 记一次Redis和NetMQ的测试

    Redis是一个高速缓存K-V数据库,而NetMQ是ZeroMQ的C#实现版本,两者是完全不同的东西. 最近做游戏服务器的时候想到,如果选择一个组件来做服务器间通信的话,ZeroMQ绝对是一个不错的选 ...

  2. Redis 集群可用性测试

    Redis 集群可用性测试 脚本内容 #!/bin/bashredisHost=192.168.8.119 redisPorts="7001 7002 7003 7004 7005 7006 ...

  3. Chaos Mesh Test(在k8s对mysql,redis zookeeper 进行chaos 测试)

    githu地址 https://github.com/zhuxiatong/chaos-mesh-test Index Chaos Mesh Test Kubernetes 环境准备  Kuberne ...

  4. SpringBoot集成Redis并使用Knife4j测试

    SpringBoot集成Redis并使用Knife4j测试 基于若依的ruoyi-vue前后端分离版本,若依官网:http://www.ruoyi.vip/ 项目目录结构 项目的目录结构如下: 1.新 ...

  5. Redis、Redis+sentinel安装(Ubuntu 14.04下Redis安装及简单测试)

    Ubuntu下Redis安装两种安装方式: 1.apt-get方式 步骤: 以root权限登录,切换到/usr目录下. 接下来输入命令,apt-get install redis-server,如图: ...

  6. redis的安装和测试

    转载:    https://www.cnblogs.com/maxm/p/6729553.html redis一直都是调用别人部署好的,近日想要自己从灵开始搭建一次.其中也生出不少枝节,与各位猿友共 ...

  7. redis 之 ae 模型测试

    为什么80%的码农都做不了架构师?>>>    主要用来测试和学习 redis 的 ae 模型 总体来说 代码结构简单,容易理解. 1. 从 redis 目录拷贝 ae.c  ae. ...

  8. Redis的安装及测试

    安装环境:vmware虚拟机 在安装redis之前,因为虚拟机是需要用到C语言环境的,所以先确定你的虚拟机里已经安装下面的软件包. 安装C 语言的编译环境 yum install centos-rel ...

  9. redis的哨兵模式测试

    上篇文章我们说到,一主二从的模式,如果主机挂掉,从机等待主机连上之后,继续成为主机的slave. 但是这样会影响我们业务的正常运转呀,我们怎么来做呢? 目前的我的服务器: 192.128.116.12 ...

最新文章

  1. css中 margin: 0px 254px 0px 254px; 是什么意思。
  2. 分享 C++命名空间的解释
  3. Galgame研发日志:那么,怎么才能回本呢?
  4. 手动造轮子——为Ocelot集成Nacos注册中心
  5. 做好7步 迅速成为行业专家
  6. Spring Cloud Config的配置中心获取不到最新配置信息的问题
  7. Matplotlib 绘图秘籍
  8. 【Redis】redis-3.0.0安装以及集群的搭建
  9. 耿丹16-1第一次作业
  10. HTML控制表格边线显示。
  11. makefile 使用 Tricks
  12. micropython入门教程-【chocho教程】micropython入门教程一
  13. pm2启动jenkins不存在tty的问题
  14. 如何在CAD中输入带圈序号?
  15. 配电网重构知识及matlab实现
  16. 计算机小喇叭找不到,电脑右下角小喇叭不见了(解决方案)
  17. mysql在手游中的作用_数据库虚拟化技术_手游业务MySQL数据库虚拟化漫谈 | By 肖力-云栖社区...
  18. 搜图出处的软件_【识图】怎样查找图片的来源出处,又快又好
  19. 区块链的未来发展和前景会如何呢?
  20. 移动端网页知识点总结

热门文章

  1. C#中用schema验证xml的合法性
  2. 如何衡量系统内存健康程度: memdelay简介
  3. 更新windows SID工具,对于虚拟机复制很有用
  4. AAuto如何设置combobox
  5. Java对象和XML之间的编排与反编排
  6. GMap.net 离线地图问题
  7. 数据库连接池和Tomcat连接池的配置问题
  8. ASP.NET MVC3细嚼慢咽---(2)模板页
  9. 在Linux中同时删除一百万个小文件的最快方法
  10. VirtualBox32位系统上安装64位系统