2012-07-05 4 views
5

Jedis (Java 클라이언트)를 사용하여 Redis 서버와 통신합니다. 3 개의 다른 노드에서 실행되는 3 개의 Redis 인스턴스가 있습니다. 3 개의 Redis 인스턴스에서 일부 레코드를 가져오고 싶습니다. 이 "gets"(읽기)를 병렬로 실행하고 수신 된 데이터를 처리하고 최종 출력을 구성하려고합니다.Jedis는 비동기 작업을 지원합니까?

java에서이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

하나의 방법은 3 개의 스레드를 생성하고 각각의 스레드에서 (동기식으로) "get"(읽기)을 실행하는 것입니다. 3 개의 명령이 모두 완료 될 때까지 기다렸다가 결과를 결합하십시오.

Jedis는 콜백 기능을 사용하여 3 개의 "gets"(해당 명령) 명령을 비동기 적으로 발행 할 수 있습니까?


나는 3 개의 다른 Redis 인스턴스를 가지고 있습니다. 병렬로 이러한 Redis 인스턴스와 상호 작용하기 위해 "ShardedJedisPipeline"(jedis/tests/ShardedJedisPipelineTest.java)을 사용 하시겠습니까?

일반 Jedis 파이프 라인 (jedis/tests/PipeliningTest.java)은 단일 Redis 인스턴스에 여러 명령을 전송하기 때문에 Redis 서버와 그 끝에있는 모든 응답에서 순서대로 실행됩니다.

그래서 "ShardedJedisPipeline"을 사용해야한다고 가정합니다. 그러나 여기에는 두 가지 제한 사항이 있습니다. 1. 3 개의 Redis 인스턴스에서 병렬로 Lua 스크립트 즉 "eval"을 실행하고 싶습니다. 2. Sharding (Jedis에서 사용하는 일부 해시 알고리즘)을 사용하여 데이터를 배포하거나 자체 알고리즘 (알고리즘 사용)에서 인스턴스의 데이터를 읽지 않습니다. 우리는 데이터 배포를위한 다른 전략을 가지고 있습니다. 그래서 내가 지정할 수 있기를 원한다. 레코드는 redis 인스턴스와 그에 따라 읽어야하는 곳에 저장되어야한다. keyTags는이 메커니즘을 제공하는 것으로 보이지만 이것을 "eval"과 함께 사용하는 방법을 모릅니다.

+0

redis.clients.jedis.Pipeline? –

답변

2

언급 한대로 파이프 라인을 사용할 수 있습니다. AsyncJedis는 진행중인 작업이며 Jedis의 다음 버전에서 출시 될 예정입니다. Netty를 기반으로하며 vert.x와 호환됩니다

+0

3 가지 다른 Redis 인스턴스가 있습니다. 병렬로 이러한 Redis 인스턴스와 상호 작용하기 위해 "ShardedJedisPipeline"(jedis/tests/ShardedJedisPipelineTest.java)을 사용 하시겠습니까? 일반 Jedis 파이프 라인 (jedis/tests/PipeliningTest.java)은 단일 Redis 인스턴스로 여러 명령을 전송하기 때문에 Redis 서버 및 모든 응답이 끝에 차례로 실행됩니다. – sunillp

+1

그래서 "ShardedJedisPipeline"을 사용해야한다고 가정합니다. 하지만 두 가지 제한이 있습니다 : 1. 3 개의 Redis 인스턴스에서 병렬로 Lua 스크립트 즉 "eval"을 실행하고 싶습니다. 2. 나는 해적판 (Jedis에서 사용하는 해시 알고리즘)을 사용하여 데이터를 배포하거나 알고리즘을 사용하여 인스턴스에서 데이터를 읽지 않습니다. 우리는 데이터 배포를위한 다른 전략을 가지고 있습니다. 그래서 내가 지정할 수 있기를 원한다. 레코드는 redis 인스턴스와 그에 따라 읽어야하는 곳에 저장되어야한다. keyTags는이 메커니즘을 제공하는 것으로 보이지만 이것을 "eval"과 함께 사용하는 방법을 모릅니다. – sunillp

0

3 개의 Jedis 인스턴스가있는 ExecutorService를 사용하여 직접 롤백 한 다음 반환되는 선물을 기다립니다.

0

지금까지 2015년 2월로, Jedis 분명히 당신이 필요로 하나의 레디 스 인스턴스를 통해 비동기 작업을 지원하지 않습니다 : https://github.com/xetorthio/jedis/issues/241

나는 3 개 스레드에 가서 선물 및 집행자 진행되는 귀하의 경우에 어떻게 할 것인지 @ Xorlev가 위에서 제안한 서비스.

관련 문제