2017-11-10 5 views
0

우리의 응용 프로그램에서 Redis 캐시를 사용할 계획입니다. 우리의 요구 사항은 실제 응용 프로그램이 시작되기 전에 Redis 캐시에 6 개월 데이터를로드해야합니다. 우리가 한 번에 하나의 명령을 삽입하여 키 값을 Redis로 가져 오려면 너무 많은 시간이 걸리며 데이터베이스에서 데이터를 검색하고 모든 데이터를 한 번에 Redis에 삽입 할 수 있습니까?데이터베이스에서 redis 캐시로 데이터를로드하는 방법은 무엇입니까?

누구든지 제안 할 수 있습니까?

답변

0

Redis는 pipelining을 지원합니다. 응답을 기다리지 않고 여러 차례 명령을 서버에 보내고 응답을 한 번에 읽지 않습니다. 동일한 목록에 많은 요소를 추가하는 것과 같이 한 줄에 여러 명령을 보내야 할 때 파이프 라이닝을 사용하면 성능이 향상 될 수 있습니다.

스프링 데이터 Redis는 파이프 라인에서 명령을 실행하기위한 여러 RedisTemplate 메서드를 제공합니다.

한 예 :

//pop a specified number of items from a queue 
List<Object> results = stringRedisTemplate.executePipelined(
    new RedisCallback<Object>() { 
    public Object doInRedis(RedisConnection connection) throws DataAccessException { 
     StringRedisConnection stringRedisConn = (StringRedisConnection)connection; 
     for(int i=0; i< batchSize; i++) { 
     stringRedisConn.rPop("myqueue"); 
     } 
    return null; 
    } 
}); 

당신이 link

을 따를 수 있습니다 또는 당신이 너무 Redis Mass insertion 기능을 사용할 수 있습니다.