Redis服务是一种C/S模型,即客户端发起请求,服务端处理并返回结果给客户端,如果Redis客户端要发送很多条请求,后面的请求需要等待前面的请求处理完后才能进行处理,而且每个请求都存在往返时间,即使redis性能极高,当数据量足够大,也会极大影响性能,所以Redis为了改进该问题,引入了管道技术:可以在服务端未及时响应的时候,客户端也可以继续发送命令请求,做到客户端和服务端互不影响,服务端并最终返回所有服务端的响应,大大提高了C/S模型交互的响应速度;(比如批量对Redis操作)
1.在jedis中使用管道Pipeline
在jedis中使用管道Pipeline
Jedis jedis = new Jedis("127.0.0.1", 6379);
jedis.auth("123456");
Pipeline pipeline = jedis.pipelined();
//批量操作
for (int i=0; i<10000; i++) {
pipeline.incr("k");
}
pipeline.sync();
2.redisTemplate使用管道Pipeline
List<Object> list = redisTemplate.executePipelined(new RedisCallback<Long>() {
@Override
public Long doInRedis(RedisConnection connection) throws DataAccessException {
connection.openPipeline();
for (int i = 0; i<100000; i++) {
String key = "kkk"+i;
connection.set(key.getBytes(), "1".getBytes());
}
//不能返回非空值
return null;
}
});