1 redis-benchmark参数说明
Redis自带redis-benchmark可以为Redis做基准性能测试,支持的参数如下。
-c(clients)选项代表客户端的并发量(默认50)
-n(num)选项代表客户端请求数量(默认100000)
-q 选项仅仅显示redis-benchmark的requests per second信息
-r(random)选项,可以向Redis插入更多随机的值
-P 选项代表每个请求pipeline的数据量(默认为1)
-k 选项代表客户端是否使用keepalive,1为使用,0为不使用,默认值为1
-t 选项可以对指定命令进行基准测试
–csv 选项会将结果按照csv格式输出
2压力测试实战
实验硬件条件:在虚拟机下,8个处理器,32GB内存,600G硬盘。
分别测试如下命令:
(1) PING_INLINE
(2) PING_BULK
(3) SET:将字符串值value关联到key;
(4) GET:返回key所关联的字符串值,如果key存储的值不是字符串类型,返回一个错误;
(5) INCR:将key中存储的数字值增一。不能转换为数字则报错;
(6) LPUSH:将一个或多个值value插入到列表key的表头;
(7) RPUSH:将一个或多个值value插入到列表key的表尾;
(8) LPOP:移除并返回列表key的头元素;
(9) RPOP:移除并返回列表key的尾元素;
(10) SADD:将一个或多个member元素加入到集合set当中,已经存在于集合的member元素将被忽略;
(11) SPOP:移除并返回集合中的一个随机元素;
(12) LPUSH:将一个或多个value插入到列表key的表头;
(13) LRANGE_100:返回列表key中指定区间内的元素,前100条元素;
(14) LRANGE_300:返回列表key中指定区间内的元素,前300条元素;
(15) LRANGE_500:返回列表key中指定区间内的元素,前500条元素;
(16) LRANGE_600:返回列表key中指定区间内的元素,前600条元素;
(17) MSET:同时设置一个或多个key-value对,value为字符串。
(1)./redis-benchmark -q -n 100000
运行在安静的模式中,且只使用单一的key。
(2)./redis-benchmark -n 100000 -q script load “redis.call(‘set’, ‘foo’, ‘bar’)”
使用直接命令来运行。
(3)./redis-benchmark -r 100000 -n 100000 -q
运行在安静的模式中,并且设置10万随机key。
(4)默认情况下,每个客户端都是在一个请求完成之后才发送下一个请求的,benchmark默认会模拟50个客户端,这意味着服务器几乎是按顺序读取每个客户端的命令。
./redis-benchmark -c 10 -r 100000 -n 100000 -q
模拟10个客户端
(5)Redis支持/topics/pipelining,使得可以一次性执行多条命令成为可能。Redis pipelining可以提高服务器的TPS。
./redis-benchmark -r 100000 -n 100000 -P 200 –q
Pipelining 16条命令的测试。