1)未使用pipeline
package org.example;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class Test1 {
public static void main(String[] args) {
JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
try (Jedis jedis = jedisPool.getResource()) {
long start = System.currentTimeMillis();
System.out.println("操作前全部值:" + jedis.keys("*"));
for (Integer i = 0; i < 100000; i++) {
jedis.set(i.toString(), i.toString());
}
long end = System.currentTimeMillis();
System.out.println("cost1:" + (end - start));
for (Integer i = 0; i < 100000; i++) {
jedis.del(i.toString());
}
System.out.println("操作后全部值:" + jedis.keys("*"));
end = System.currentTimeMillis();
System.out.println("cost2:" + (end - start));
}
}
}
/*
操作前全部值:[user:jianan]
cost1:4992
操作后全部值:[user:jianan]
cost2:9672
*/
2)使用pipeline
package org.example;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Pipeline;
public class Test2 {
public static void main(String[] args) {
JedisPool jedisPool = new JedisPool("127.0.0.1", 6379);
try (Jedis jedis = jedisPool.getResource()) {
long start = System.currentTimeMillis();
System.out.println("操作前全部值:" + jedis.keys("*"));
Pipeline pipeline = jedis.pipelined();
for (Integer i = 0; i < 100000; i++) {
pipeline.set(i.toString(), i.toString());
}
long end = System.currentTimeMillis();
System.out.println("cost1:" + (end - start));
for (Integer i = 0; i < 100000; i++) {
pipeline.del(i.toString());
}
pipeline.sync();
System.out.println("操作后全部值:" + jedis.keys("*"));
end = System.currentTimeMillis();
System.out.println("cost2:" + (end - start));
}
}
}
/*
操作前全部值:[user:jianan]
cost1:218
操作后全部值:[user:jianan]
cost2:406
*/
总结:
当操作很多时,提升的倍数: 9672/406=23.822660098522