美文网首页
redis压力测试

redis压力测试

作者: Lisong | 来源:发表于2019-05-13 15:51 被阅读0次

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

Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean>]
 
 -h <hostname>      Server hostname (default 127.0.0.1)
 -p <port>          Server port (default 6379)
 -s <socket>        Server socket (overrides host and port)
 -a <password>      Password for Redis Auth
 -c <clients>       Number of parallel connections (default 50)
 -n <requests>      Total number of requests (default 100000)
 -d <size>          Data size of SET/GET value in bytes (default 2)
 -dbnum <db>        SELECT the specified db number (default 0)
 -k <boolean>       1=keep alive 0=reconnect (default 1)
 -r <keyspacelen>   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 <numreq>        Pipeline <numreq> requests. Default 1 (no pipeline).
 -q                 Quiet. Just show query/sec values
 --csv              Output in CSV format
 -l                 Loop. Run the tests forever
 -t <tests>         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.

常用参数

选项 描述 默认值
-h 指定服务器主机名 127.0.0.1
-p 指定服务器端口 6379
-s 指定服务器socket
-c 指定并发连接数 50
-n 指定请求数 10000
-d 以字节的形式指定 SET/GET 值的数据大小 2
-k 1=keepalive ,0=reconnect 1
-r SET/GET/incr 使用随机key,SADD使用随机值
-P 通过管道传输 <numreq> 1
-q 强制退出redis,仅显示query/sec 值
--csv 以CSV格式输出
-l 生成循环,永久执行测试
-t 仅运行以逗号分隔的测试命令列表
-I Idle 模式,仅打开N个idle 连接并等待

压测命令

redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 10000 -t get
redis-benchmark -t set,lpush -n 100000 -q

SET: 74239.05 requests per second
LPUSH: 79239.30 requests per second
redis-benchmark -n 100000 -q script load "redis.call('set','foo','bar')"

script load redis.call('set','foo','bar'): 43271.31 requests per second
redis-benchmark -r 1000000 -n 2000000 -t get,set,lpush,lpop -q -P 16

选择测试键的范围大小
假设我们想设置 10 万随机 key 连续 SET 100 万次,我们可以使用下列的命令

redis-benchmark -h 127.0.0.1 -p 6379 -t set -r 100000 -n 1000000


====== SET ======
  1000000 requests completed in 13.86 seconds
  50 parallel clients
  3 bytes payload
  keep alive: 1
 
99.76% `<=` 1 milliseconds
99.98% `<=` 2 milliseconds
100.00% `<=` 3 milliseconds
100.00% `<=` 3 milliseconds
72144.87 requests per second

使用 pipelining
默认情况下,每个客户端都是在一个请求完成之后才发送下一个请求 (benchmark 会模拟 50 个客户端除非使用 -c 指定特别的数量), 这意味着服务器几乎是按顺序读取每个客户端的命令。Also RTT is payed as well.
Redis pipelining 可以提高服务器的 TPS ,记得在多条命令需要处理时候使用 pipelining。

redis-benchmark -n 10000 -t set,get -P 16 -q

SET: 583771.12 requests per second
GET: 414765.66 requests per second

相关文章

  • redis压力测试

    redis-benchmark -h localhost -p 6379 -c 100 -n 100000(100...

  • redis压力测试

    Redis 自带了一个叫 redis-benchmark 的工具来模拟 N 个客户端同时发出 M 个请求。 (类似...

  • Redis 压力测试

    前言 最近公司用到Redis作为中间件,但是使用Redis作为中间件的时候,有的时候比较难定位到问题具体在什么地方...

  • Redis_测试性能

    redis-benchmark是一个压力测试工具,官方自带的性能测试工具!redis性能测试工具可选参数如下所示:...

  • 压力测试分析(转载大牛的)

    压力测试分析 1.从压力测试说起 压力测试的理解,xxx的性能10w/s,对你有意义么? 举个栗子,Redis官网...

  • Redis 性能测试

    本文使用 redis 自带的 redis-benchmark 工具进行压力测试 参数说明 命令格式如下: 参数说明...

  • Tips Book

    redis可以使用redis-benchmark命令进行压力测试。常用命令参数有 -h : host -p : p...

  • redis基础知识

    一、redis-benchmark redis自带的压力测试工具! 如果按照默认路径安装,该工具安装在路径/...

  • SpringBoot中的缓存穿透、击穿、雪崩解决方案

    添加Redis依赖 RedisTemplate底层使用lettuce的话,进行压力测试时,会抛内存溢出异常,因此去...

  • 关于net.ipv4.ip_local_port_range的坑

    今天压力测试某服务时发现一个特别诡异的问题,redis-cli连接后端redis-server,客户端所在的服务器...

网友评论

      本文标题:redis压力测试

      本文链接:https://www.haomeiwen.com/subject/dwqraqtx.html