여러 작업을 한방에 몰아서 일괄 실행하고 그 결과를 얻어오는 방법..

Spring Data의 Redis 활용해서.. Pipeline 을 이용한 일괄 실행하기.

매번 루프 돌면서 stringRedisTemplate.opsForHash().get() 하는 거에 비하면 루프 카운트가 클수록 대박 빠르겠지요?

소스 활용은 대략 이러함..

List<Object> result = null;

RedisConnectionFactory conFactory = stringRedisTemplate.getConnectionFactory();

RedisConnection con = RedisConnectionUtils.bindConnection(conFactory);

try {

con.openPipeline();

try {

Iterator<String> it = usersId.iterator();

while ( it.hasNext() ) {

String userId = (String)it.next();

stringRedisTemplate.boundHashOps(QUEUE_NAME_USER_STATUS).get(userId);

stringRedisTemplate.boundHashOps(QUEUE_NAME_USER_MYSTATUS).get(userId);

stringRedisTemplate.boundHashOps(QUEUE_NAME_USER_LOGINDEVICE).get(userId);

stringRedisTemplate.boundHashOps(QUEUE_NAME_USER_IPLISTENSS).get(userId);

}

} finally {

result = con.closePipeline();

}

} finally {

    RedisConnectionUtils.unbindConnection(conFactory);

}


+ Recent posts