记一次对Redis单机版的性能测性
在某书本上,有描述,redis 支持十几万次/s的读、81000万次的写。读写性能可能有多方面因素,最近刚买了一台云主机,今天我也来测试下吧。代码如下:
import redis.clients.jedis.Jedis;
public class QpsRedisTest {
public static void main(String[] args) {
//如果使用网络,则无法测试性能
//Jedis jedis = new Jedis("真实IP", 6379);
Jedis jedis = new Jedis("localhost", 6379);
jedis.auth("123456");
int i = 0 ;
try{
long l = System.currentTimeMillis();
while(true){
long end = System.currentTimeMillis();
if(end - l>=1000){
break;
}
i++;
jedis.set("test:" + i,i+"");
//下面这行打印代码,在Linux本地环境测试影响很大,性能差了1倍多
//System.out.println("current=" + i);
}
System.out.println("write qps :" + i + "/s");
i = 0;
long l2 = System.currentTimeMillis();
while(true){
long end = System.currentTimeMillis();
if(end - l2>=1000){
break;
}
i++;
jedis.get("test:1");
//下面这行打印代码,在Linux本地环境测试影响很大,性能差了1倍多
//System.out.println("current=" + i);
}
System.out.println("read qps :" + i + "次/s");
}catch (Exception e){
e.printStackTrace();
}finally {
jedis.close();
}
}
}
环境
- redis-6.0.5
- jdk-8u121-linux-x64
- 云服务器 1核 2GB 1Mbps(3.10.0-862.el7.x86_64 #1 x86_64 x86_64 x86_64 GNU/Linux)
测试
将代码打成jar包,拷贝到服务器本机,进行测试:
[root@VM_0_13_centos SpringForRedis_jar]# java -jar SpringForRedis.jar
write qps :27772/s
read qps :34811/s
在我的电脑上测试(网络因素,仅供参考):
write qps :31/s
read qps :31/s
redis自带的性能测试:
[root@VM_0_13_centos ~]# redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q
ERROR: NOAUTH Authentication required.
ERROR: failed to fetch CONFIG from 127.0.0.1:6379
WARN: could not fetch server CONFIG
SET: 64516.13 requests per second
LPUSH: 63694.27 requests per second
结论
整体来说,云服务的主机,使用Java的API,读写性能并没有达到书上所说的,而且读和写的性能差别不大;但是使用redis的性能测试指令,性能比较高;性能测试需要考虑的点较多,也需要大量的测试比较,今天也只是简单验证了下set的读写性能,记录一下,希望后续能够更深入的学习。
以后有遇到相关的知识,再来扫盲啦!