2016-09-19 3 views
2

Jedis와 JedisCluster가 일반적인 Java 인터페이스를 구현하지 못하는 이유가 궁금합니다. 내 소프트웨어는 redis가 클러스터 모드로 실행되거나 실행되지 않는 다른 환경에서 실행되므로 Jedis를 사용하여 두 환경에서 모두 실행되는 공통 코드를 어떻게 구현합니까?Jedis와 JedisCluster의 공용 인터페이스

클라이언트는 기본 작업 만 수행하며 라이브러리 내의 클러스터 작업을 숨기고 노출시키지 않습니다. 모듈 식 디자인에 대한 아이디어가 있습니까?

감사합니다.

답변

1

이 모양이 귀하의 답변 redis.clients.jedis.JedisCommands 일 수 있습니다.

이 인터페이스를 메서드의 인수로 사용하고 Jedis 또는 JedisCluster 인스턴스를 전달할 수 있습니다.

+1

JedisCluster는 JedisCluster를 구현하고 JedisCommands는 구현하지 않습니다. 내가 놓친 게 있니? –

+0

public class JedisCluster extends BinaryJedisCluster는 JedisCommands, MultiKeyJedisClusterCommands, JedisClusterScriptingCommands를 구현합니다. – leonardseymore

+0

버전 2.9.0에서 구현되는 것처럼 보입니다. 불행하게도 모든 명령이 JedisCommands 인터페이스에서 사용 가능한 것은 아닙니다. 예를 들어, 트랜잭션을 사용하고 싶었고 JedisCluster에서 사용할 수없는 것 같습니다. – leonardseymore