热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

redis压力测试

redis自带的redis-benchmark工具Redis自带了一个叫redis-benchmark的工具来模拟N个客户端同时发出M个请求。(类似于Apacheab程序)。你可以

redis自带的redis-benchmark工具

Redis 自带了一个叫redis-benchmark的工具来模拟 N 个客户端同时发出 M 个请求。 (类似于 Apache ab 程序)。你可以使用 redis-benchmark -h 来查看基准参数。

  • 1 使用方法 redis-benchmark [-h ] [-p ] [-c ] [-n [-k ]
序号选项描述默认值
1-h指定redis server 主机名localhost
2-p指定redis 服务端口6379
3-s指定服务器socket
4-c指定并发连接数50
5-n指定请求数10000
6-d以字节形式指定SET/GET值的数值大小2
7-k1=keepalive 0=reconnect1
8-rSET/GET/INCR使用随机key, SADD使用随机值
9-P通过管道传输请求1
10-q强制退出redis.仅显示query/sec值
11-csv以csv格式输出
12-l生成循环 永久执行测试
13-t仅运行以逗号分隔的测试命令列表
14-IIdle模式,仅打开N个idle连接并等待

[root@redis-test-slave ~ ]$ redis-benchmark --help
Usage: redis-benchmark [-h ] [-p ] [-c ] [-n [-k ]
-h Server hostname (default 127.0.0.1)
-p Server port (default 6379)
-s Server socket (overrides host and port)
-a Password for Redis Auth
-c Number of parallel connections (default 50)
-n Total number of requests (default 100000)
-d Data size of SET/GET value in bytes (default 2)
--dbnum SELECT the specified db number (default 0)
-k 1=keep alive 0=reconnect (default 1)
-r Use random keys for SET/GET/INCR, random values for SADD
Using this option the benchmark will expand the string __rand_int__
inside an argument with a 12 digits number in the specified range
from 0 to keyspacelen-1. The substitution changes every time a command
is executed. Default tests use this to hit random keys in the
specified range.
-P Pipeline requests. Default 1 (no pipeline).
-e If server replies with errors, show them on stdout.
(no more than 1 error per second is displayed)
-q Quiet. Just show query/sec values
--csv Output in CSV format
-l Loop. Run the tests forever
-t Only run the comma separated list of tests. The test
names are the same as the ones produced as output.
-I Idle mode. Just open N idle connections and wait.

Examples:
Run the benchmark with the default configuration against 127.0.0.1:6379:
# 运行默认配置下的测试
$ redis-benchmark
Use 20 parallel clients, for a total of 100k requests, against 192.168.1.1:
# 指定并发数20,总请求数为10W,redis server主机IP为192.168.1.1
$ redis-benchmark -h 192.168.1.1 -p 6379 -n 100000 -c 20
Fill 127.0.0.1:6379 with about 1 million keys only using the SET test:
# 测试SET随机数性能
$ redis-benchmark -t set -n 1000000 -r 100000000
Benchmark 127.0.0.1:6379 for a few commands producing CSV output:
# 测试结果输出到csv
$ redis-benchmark -t ping,set,get -n 100000 --csv
Benchmark a specific command line:
# 执行特定命令下的测试
$ redis-benchmark -r 10000 -n 10000 eval 'return redis.call("ping")' 0
Fill a list with 10000 random elements:
# 测试list入队的速度
$ redis-benchmark -r 10000 -n 10000 lpush mylist __rand_int__
On user specified command lines __rand_int__ is replaced with a random integer
with a range of values selected by the -r option.

  • 2 实际测试过程

    • redis-benchmark 默认参数下的测试

[root@redis-test-slave ~ ]$ redis-benchmark
====== PING_INLINE ======
100000 requests completed in 0.83 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
120192.30 requests per second

====== PING_BULK ======
100000 requests completed in 0.85 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
118203.30 requests per second

====== SET ======
100000 requests completed in 0.80 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
125786.16 requests per second

====== GET ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
125944.58 requests per second

====== INCR ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
126903.55 requests per second

====== LPUSH ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
126262.62 requests per second

====== RPUSH ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
126103.41 requests per second

====== LPOP ======
100000 requests completed in 0.80 seconds
50 parallel clients
3 bytes payload
keep alive: 1

99.97% <= 1 milliseconds
100.00% <= 1 milliseconds
125628.14 requests per second

====== RPOP ======
100000 requests completed in 0.80 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
125786.16 requests per second

====== SADD ======
100000 requests completed in 0.80 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
125786.16 requests per second

====== HSET ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
126103.41 requests per second

====== SPOP ======
100000 requests completed in 0.80 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
125628.14 requests per second

====== LPUSH (needed to benchmark LRANGE) ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
126262.62 requests per second

====== LRANGE_100 (first 100 elements) ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
127388.53 requests per second

====== LRANGE_300 (first 300 elements) ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
127388.53 requests per second

====== LRANGE_500 (first 450 elements) ======
100000 requests completed in 0.78 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
127551.02 requests per second

====== LRANGE_600 (first 600 elements) ======
100000 requests completed in 0.79 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
126742.72 requests per second

====== MSET (10 keys) ======
100000 requests completed in 0.77 seconds
50 parallel clients
3 bytes payload
keep alive: 1

100.00% <= 0 milliseconds
129701.68 requests per second

参考

http://www.redis.cn/topics/benchmarks.html

推荐阅读
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • http:my.oschina.netleejun2005blog136820刚看到群里又有同学在说HTTP协议下的Get请求参数长度是有大小限制的,最大不能超过XX ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 如何使用计算机控制遥控车的步骤和电路制作方法
    本文介绍了使用计算机控制遥控车的步骤和电路制作方法。首先,需要检查发送器的连接器和跳线,以确定命令的传递方式。然后,通过连接跳线和地面,将发送器与电池的负极连接,以实现遥控车的前进。接下来,制作一个简单的电路,使用Arduino命令将连接到跳线的电线接地,从而实现将Arduino命令转化为发送器命令。最后,通过焊接晶体管和电阻,完成电路制作。详细的步骤和材料使用方法将在正文中介绍。 ... [详细]
author-avatar
恋若寒1999
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有