1:测试版本:腾讯云服务器
配置:1核 2GB 1Mbps
测试代码:
注:JedisPool的连接参数均使用默认配置
private final int num = 100000;
@Test
public void testRedisTemplate() throws IOException {
long time = 0;
for (int i = 0; i < num; i++) {
// 1、推送
long time1 = System.currentTimeMillis();
redisTemplate.opsForValue().set(i+"",i+"");
long time2 = System.currentTimeMillis();
time += time2 - time1;
}
System.out.println("总时间:" + time);
//------------------------------------------------
@Test
public void testJedis2() throws IOException {
JedisPool jedisPool = new JedisPool(poolConfig,hostName,port,5000,password);
long time = 0;
for (int i = 0; i < num; i++) {
try (Jedis jedis = jedisPool.getResource()) {
// 1、推送
long time1 = System.currentTimeMillis();
jedis.set(i+"",i+"");
long time2 = System.currentTimeMillis();
time += time2 - time1;
} catch (Exception e) {
e.printStackTrace();
}
}
System.out.println("总时间:" + time);
由于是在本机连着云服务器测得,所以主要时间基本会耗费在Tcp的连接上,看下结果:
单位(毫秒)
redisTemplate;
//10:总时间:1966
//100:总时间:4861
//500:30712
//5000:总时间:264042
//------------------------
JedisPool:
//10:总时间:308
//100:总时间:2412
//500:总时间:14388
//5000:总时间:134836
耗时基本都是按访问的倍数增长的,但是JedisPool稍微好点,因为本机测试redisTemplate到5000次的访问已经已经突破4分钟了,所以没有继续测,看下图形趋势:
测完服务器,来试一下本地的,在windows上直接启动redis服务,host设置为"127.0.0.1",再测:
单位(毫秒)
redisTemplate;
//本地-10:总时间:1506
//本地-100:总时间:1670
//本地-500:总时间:2178
//本地-5000:总时间:5964
//本地-50000:总时间:38045
//本地-100000:总时间:72839
//----------------------------------------
JedisPool:
//本地-10:总时间:6
//本地-100:总时间:25
//本地-500:总时间:92
//本地-5000:总时间:771
//本地-50000:总时间:7066
//本地-100000:总时间:13962
这结果简直是优秀啊,纵使redistTemplate再怎么坑比,但是5000次的耗时依然只有接近6秒,所以一直搞到了十万次,也才不过72秒而已,但是是按指数增长的,JedisPool这边就好多了,看下数据图:
这个主因是服务器的带宽太低了,另一个就是磁盘了,使用redis-benchmark测试一下:
redis-benchmark -h 127.0.0.1 -p 6379 -t set,lpush -n 10000 -q
低速服务器:
本地:
写入性能差了三倍,我本机内存是DDR4频率2666Mhz的,看这结果服务器配的应该连三代都不如,唉,一分钱一分货了