Redis不支持集群错误——ERR This instance has cluster support disabled

缘起

最近手动配置了Redis的连接池

@Bean
public RedisTemplate<String, Object> redisTemplate() {
    RedisClusterConfiguration redisClusterConfiguration = new RedisClusterConfiguration();
    redisClusterConfiguration.setClusterNodes(Arrays.asList(new RedisNode(redisHost,port)));
    redisClusterConfiguration.setPassword(password);
    LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisClusterConfiguration);
    RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
    redisStandaloneConfiguration.setHostName(redisHost);
    redisStandaloneConfiguration.setPort(port);
    redisStandaloneConfiguration.setPassword(password);
    LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
    lettuceConnectionFactory.setDatabase(db);
    lettuceConnectionFactory.afterPropertiesSet();
	RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
    redisTemplate.setConnectionFactory(lettuceConnectionFactory);
    Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
    // 设置值(value)的序列化采用Jackson2JsonRedisSerializer。
    redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
    // 设置键(key)的序列化采用StringRedisSerializer。
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    redisTemplate.setHashKeySerializer(new StringRedisSerializer());
    redisTemplate.afterPropertiesSet();
    return redisTemplate;
}

使用时报错:

Details:
	[redis://***************************@xxx]: ERR This instance has cluster support disabled

	Suppressed: io.lettuce.core.RedisCommandExecutionException: ERR This instance has cluster support disabled
		at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147)
		at io.lettuce.core.internal.Exceptions.bubble(Exceptions.java:72)
		at io.lettuce.core.cluster.topology.DefaultClusterTopologyRefresh.getException(DefaultClusterTopologyRefresh.java:402)
		at io.lettuce.core.cluster.topology.DefaultClusterTopologyRefresh.tryFail(DefaultClusterTopologyRefresh.java:173)
		at io.lettuce.core.cluster.topology.DefaultClusterTopologyRefresh.lambda$null$9(DefaultClusterTopologyRefresh.java:150)
		at java.base/java.util.concurrent.CompletableFuture$UniCompose.tryFire(CompletableFuture.java:1150)
		at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
		at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
		at io.lettuce.core.RedisChannelHandler.lambda$closeAsync$0(RedisChannelHandler.java:189)
		at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
		at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(CompletableFuture.java:841)
		at java.base/java.util.concurrent.CompletableFuture.postComplete(CompletableFuture.java:510)
		at java.base/java.util.concurrent.CompletableFuture.complete(CompletableFuture.java:2147)
		at io.lettuce.core.internal.Futures.lambda$adapt$1(Futures.java:120)
		at io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)
		at io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)
		at io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)
		at io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)
		at io.netty.util.concurrent.DefaultPromise.setSuccess0(DefaultPromise.java:625)
		at io.netty.util.concurrent.DefaultPromise.trySuccess(DefaultPromise.java:105)
		at io.netty.channel.DefaultChannelPromise.trySuccess(DefaultChannelPromise.java:84)
		at io.netty.channel.AbstractChannel$AbstractUnsafe.safeSetSuccess(AbstractChannel.java:990)
		at io.netty.channel.AbstractChannel$AbstractUnsafe.doClose0(AbstractChannel.java:756)
		at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:731)
		at io.netty.channel.AbstractChannel$AbstractUnsafe.close(AbstractChannel.java:620)
		at io.netty.channel.DefaultChannelPipeline$HeadContext.close(DefaultChannelPipeline.java:1352)
		at io.netty.channel.AbstractChannelHandlerContext.invokeClose(AbstractChannelHandlerContext.java:749)
		at io.netty.channel.AbstractChannelHandlerContext.access$1200(AbstractChannelHandlerContext.java:61)
		at io.netty.channel.AbstractChannelHandlerContext$11.run(AbstractChannelHandlerContext.java:732)
		at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
		at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
		at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:569)
		at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
		at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
		at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
		at java.base/java.lang.Thread.run(Thread.java:833)
	Caused by: io.lettuce.core.RedisCommandExecutionException: ERR This instance has cluster support disabled
		at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147)
		at io.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116)
		at io.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120)
		at io.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111)
		at io.lettuce.core.cluster.topology.TimedAsyncCommand.complete(TimedAsyncCommand.java:52)
		at io.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:747)
		at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:682)
		at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:599)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:442)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
		at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:412)
		at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:440)
		at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:420)
		at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
		at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:166)
		at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:788)
		at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:724)
		at io.netty.channel.nio.NioEventLoop.processSelectedKeys(NioEventLoop.java:650)
		at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:562)

修改RedisServer配置解决

提示语ERR This instance has cluster support disabled说明RedisServer不支持集群,网上很多文章都是修改Server配置重启解决此问题的,这不再赘述

修改RedisClient配置解决

我没公司RedisServer权限,公司的RedisServer不是集群部署,就是单个,那就只能从配置上修改一下了,Configuration从Cluster变成Standalone即可

@Bean
public RedisTemplate<String, Object> redisTemplate() {

   RedisStandaloneConfiguration redisStandaloneConfiguration = new RedisStandaloneConfiguration();
   redisStandaloneConfiguration.setHostName(redisHost);
   redisStandaloneConfiguration.setPort(port);
   redisStandaloneConfiguration.setPassword(password);
   LettuceConnectionFactory lettuceConnectionFactory = new LettuceConnectionFactory(redisStandaloneConfiguration);
   lettuceConnectionFactory.setDatabase(db);
   lettuceConnectionFactory.afterPropertiesSet();

   RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
   redisTemplate.setConnectionFactory(lettuceConnectionFactory);
   Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
   // 设置值(value)的序列化采用Jackson2JsonRedisSerializer。
   redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
   // 设置键(key)的序列化采用StringRedisSerializer。
   redisTemplate.setKeySerializer(new StringRedisSerializer());
   redisTemplate.setHashKeySerializer(new StringRedisSerializer());

   redisTemplate.afterPropertiesSet();
   return redisTemplate;
}

你可能感兴趣的:(JAVA,Redis,redis,数据库,缓存)