Spring Data Redis Pipeline 활용
여러 작업을 한방에 몰아서 일괄 실행하고 그 결과를 얻어오는 방법..
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);
}