java redis pipeline,redis pipeline简介

java中redis的pipeline

pipeline方式执行redis操作:

List results = this.getRedisTemplate().executePipelined(new RedisCallback() {

@Override

public Object doInRedis(RedisConnection connection) throws DataAccessException {

RedisSerializer keySerializer=new StringRedisSerializer();

for (String key : keys) {

connection.get(keySerializer.serialize(key));

}

return null;

}

});

doInRedis方法中实现需要的redis操作

RedisTemplate中的executePipelined方法:

public List executePipelined(final RedisCallback> action) {

return executePipelined(action, valueSerializer);

}

public List executePipelined(final RedisCallback> action, final RedisSerializer> resultSerializer) {

return execute(new RedisCallback>() {

public List doInRedis(RedisConnection connection) throws DataAccessException {

connection.openPipeline();

boolean pipelinedClosed = false;

try {

Object result = action.doInRedis(connection);

if (result != null) {

throw new InvalidDataAccessApiUsageException(

"Callback cannot return a non-null value as it gets overwritten by the pipeline");

}

List closePipeline = connection.closePipeline();

pipelinedClosed = true;

return deserializeMixedResults(closePipeline, resultSerializer, resultSerializer, resultSerializer);

} finally {

if (!pipelinedClosed) {

connection.closePipeline();

}

}

}

});

}

注意

doInRedis中的redis操作不会立刻执行

所有redis操作会在connection.closePipeline()之后一并提交到redis并执行,这是pipeline方式的优势

所有操作的执行结果为executePipelined()的返回值

你可能感兴趣的:(java,redis,pipeline)