java 不支持带有JedisCluster的管道

2ic8powd  于 2023-01-15  发布在  Java
关注(0)|答案(1)|浏览(118)

我正在Spring中编写一个Web应用程序,并且正在使用Spring Data Redis和Jedis。这个Web应用程序通过许多set命令与一个redis集群对话。"我想通过管道向redis集群发送命令。当我尝试这样做时,我遇到了一个异常:
不支持的操作异常:JedisClusterConnection当前不支持管道。
我的选择是什么?
编辑1:

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;
}
sq1bmfud

sq1bmfud1#

你试过Redisson框架吗?它在集群模式下支持Redis管道。下面是一个例子:

RBatch batch = redisson.createBatch(BatchOptions.defaults());
batch.getMap("test1").fastPutAsync("1", "2");
batch.getMap("test2").fastPutAsync("2", "3");
batch.getMap("test3").putAsync("2", "5");
batch.getAtomicLong("counter").incrementAndGetAsync();
batch.getAtomicLong("counter").incrementAndGetAsync();
batch.execute();

相关问题