2016-08-26 2 views
0

나는 생산자/소비자 대기열로 사용하고있는 Redis 대기열의 Java 라이브러리 Jedis ontop을 사용하고 있습니다. 설정하기 쉽고 멋지게 작동합니다.메시지 대기열 성능으로서의 Jedis

List<String> messages = jedis.blpop(0, redisQueueName); 
String message = messages.get(1); 
//do some stuff 

아래

소비자 코드는 내가 뽑힐 기다리고 레디 스 큐에 앉아 항목의 많은 양을 가지고 내가 성능을 향상 할 수 있는지 찾고 있어요. 내 사용자 지정 처리 코드 시간이 초과되었으며 너무 오래 걸리지 않습니다 (20000 나노 초).

Redis에서 한 번에 여러 항목을 가져 와서 일괄 적으로 처리하는 것이 가장 좋습니다. 아니면 더 나은 성능을 위해 Redis 서버를 조정하는 것이 좋습니다.

+0

귀하의 문제는 실제로 Redis와 IO 사이에있을 것입니다 - 일괄 적으로 잡을 것입니다; 어떤 종류의 거래도없이 어쨌든 메시지를 잃을 수 있습니다. Redis를 사용하고 있다는 사실은 이것이 당신에게 문제가되지 않는다는 것을 암시합니다. –

답변

0

일괄 처리를 사용하는 것이 가장 좋습니다. 너는 네트워크 왕복을 피할 것이다.

큐가 빠르게 커지고 큐 크기 (메모리 크기)를 제어하려는 경우 한 가지 더 중요한 것은 특정 범위를 벗어나면 큐를 트리밍하는 것입니다. 대기열 크기가 커지면 건너 뛰기보다는 대기열의 모든 항목을 수행 할 필요가없는 경우가 있습니다.

당신은 유지하려면

먼저 요소를 입력 즉., 지난 100 개 요소를 유지하려면 혼자

Ltrim queue 0 100 

를 처음 100 개 요소를 유지하면

Ltrim queue -1 100 

희망을 할 수있는이

을하는 데 도움이