2016-08-04 8 views
0

Ich schreibe eine Webanwendung im Frühjahr und verwende Spring Data Redis mit Jedis. Das Web-App im Gespräch mit einem redis Cluster mit vielen Set-Befehlen“ würde Ich mag Befehle an dem redis Cluster in einer Pipeline schicken Als ich versuchte, dass ich eine Ausnahme bekam.Pipeline mit JedisCluster nicht unterstützt

java.lang. UnsupportedOperationException: Pipeline ist derzeit nicht für JedisClusterConnection unterstützt

Was meine Alternative wäre

Edit1:.?

protected void store(Map<String,Creative> creativesToStore, Function<Map<String,Creative>,Object> executedAction) 
{ 
    this.redisTemplate.execute(
      redisConnection -> executedAction.apply(creativesToStore), true, true); // Pipelined execution*/ 

} 

protected Object storeAllCreativesRedis(Map<String,Creative> creativesToStore) 
{ 
    creativesToStore.keySet() 
      .stream() 
      .filter(key -> creativesToStore.get(key)!=null) 
      .forEach(key -> { 
       redisTemplate.opsForValue().set(key, creativesToStore.get(key), ttlSeconds, timeUnit); 
       logger.debug("Issuing a redis set for %s ",key); 
      }); 
    return null; 
} 
+1

Teilen Sie Ihren Code, nicht nur die Ausnahme? – alzee

+0

Sie können eine Verbindung zu dem Knoten herstellen, auf dem sich Ihre Schlüssel befinden, und Pipelining direkt verwenden. – mp911de

+0

Können Sie ein Beispiel zeigen, wie Sie sich bitte mit einem einzelnen Knoten in einem Cluster verbinden? –

Antwort

1

Haben Sie ein Redisson Framework versucht? Es unterstützt Redis-Pipeline im Cluster-Modus.

+1

Während dieser Link die Frage beantworten kann, ist es besser, die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz zur Verfügung zu stellen. Nur-Link-Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. - [Aus Bewertung] (/ review/low-quality-posts/18950900) –

Verwandte Themen