Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command `CONFIG`

这篇具有很好参考价值的文章主要介绍了Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command `CONFIG`。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command CONFIG

项目本机启动运行正常,打成jar包发布测试环境–公司测试服务器正常启动运行,项目上线前需要发布在客户购买的亚马逊的K8S服务器,同时客户在亚马逊购买了Redis服务器,PostgreSQL服务器,所以新建了配置文件,将代码构建为镜像推送至客户服务器,然后进行启动编译,连接数据库一切正常,但是到连接Redis时一直报错,开始运维只给了报错截图,报错信息并不全,导致一直找不到具体原因走了许多弯路,也并没有解决问题

截图如下!
Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command `CONFIG`,redis,redis,kubernetes

通过这张图片一直以为是Redis连接超时问题,以为是Redis设置超时时间太短,一直在修改Redis超时时间,后来发现并没有什么用,后来以为是因为是生产环境,对redis的危险命令进行禁用和重命名,但是经过一番折腾后发现也没什么用,后来让运维发了具体的报错信息,具体信息如下:

Caused by: org.springframework.data.redis.RedisSystemException: Error in execution; nested exception is io.lettuce.core.RedisCommandExecutionException: ERR unknown command CONFIG, with args beginning with: GET, notify-keyspace-events,
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:54)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:52)
at org.springframework.data.redis.connection.lettuce.LettuceExceptionConverter.convert(LettuceExceptionConverter.java:41)
at org.springframework.data.redis.PassThroughExceptionTranslationStrategy.translate(PassThroughExceptionTranslationStrategy.java:44)
at org.springframework.data.redis.FallbackExceptionTranslationStrategy.translate(FallbackExceptionTranslationStrategy.java:42)
at org.springframework.data.redis.connection.lettuce.LettuceConnection.convertLettuceAccessException(LettuceConnection.java:271)
at org.springframework.data.redis.connection.lettuce.LettuceConnection.await(LettuceConnection.java:1062)
at org.springframework.data.redis.connection.lettuce.LettuceConnection.lambda$doInvoke 4 ( L e t t u c e C o n n e c t i o n . j a v a : 919 ) a t o r g . s p r i n g f r a m e w o r k . d a t a . r e d i s . c o n n e c t i o n . l e t t u c e . L e t t u c e I n v o k e r 4(LettuceConnection.java:919) at org.springframework.data.redis.connection.lettuce.LettuceInvoker 4(LettuceConnection.java:919)atorg.springframework.data.redis.connection.lettuce.LettuceInvokerSynchronizer.invoke(LettuceInvoker.java:673)
at org.springframework.data.redis.connection.lettuce.LettuceInvoker D e f a u l t S i n g l e I n v o c a t i o n S p e c . g e t ( L e t t u c e I n v o k e r . j a v a : 589 ) a t o r g . s p r i n g f r a m e w o r k . d a t a . r e d i s . c o n n e c t i o n . l e t t u c e . L e t t u c e S e r v e r C o m m a n d s . g e t C o n f i g ( L e t t u c e S e r v e r C o m m a n d s . j a v a : 177 ) a t o r g . s p r i n g f r a m e w o r k . d a t a . r e d i s . c o n n e c t i o n . D e f a u l t e d R e d i s C o n n e c t i o n . g e t C o n f i g ( D e f a u l t e d R e d i s C o n n e c t i o n . j a v a : 1416 ) a t o r g . s p r i n g f r a m e w o r k . d a t a . r e d i s . l i s t e n e r . K e y s p a c e E v e n t M e s s a g e L i s t e n e r . i n i t ( K e y s p a c e E v e n t M e s s a g e L i s t e n e r . j a v a : 89 ) a t o r g . s p r i n g f r a m e w o r k . d a t a . r e d i s . l i s t e n e r . K e y s p a c e E v e n t M e s s a g e L i s t e n e r . a f t e r P r o p e r t i e s S e t ( K e y s p a c e E v e n t M e s s a g e L i s t e n e r . j a v a : 137 ) a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . s u p p o r t . A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . i n v o k e I n i t M e t h o d s ( A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . j a v a : 1863 ) a t o r g . s p r i n g f r a m e w o r k . b e a n s . f a c t o r y . s u p p o r t . A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . i n i t i a l i z e B e a n ( A b s t r a c t A u t o w i r e C a p a b l e B e a n F a c t o r y . j a v a : 1800 ) . . . 24 m o r e C a u s e d b y : i o . l e t t u c e . c o r e . R e d i s C o m m a n d E x e c u t i o n E x c e p t i o n : E R R u n k n o w n c o m m a n d ‘ C O N F I G ‘ , w i t h a r g s b e g i n n i n g w i t h : ‘ G E T ‘ , ‘ n o t i f y − k e y s p a c e − e v e n t s ‘ , a t i o . l e t t u c e . c o r e . i n t e r n a l . E x c e p t i o n F a c t o r y . c r e a t e E x e c u t i o n E x c e p t i o n ( E x c e p t i o n F a c t o r y . j a v a : 147 ) a t i o . l e t t u c e . c o r e . i n t e r n a l . E x c e p t i o n F a c t o r y . c r e a t e E x e c u t i o n E x c e p t i o n ( E x c e p t i o n F a c t o r y . j a v a : 116 ) a t i o . l e t t u c e . c o r e . p r o t o c o l . A s y n c C o m m a n d . c o m p l e t e R e s u l t ( A s y n c C o m m a n d . j a v a : 120 ) a t i o . l e t t u c e . c o r e . p r o t o c o l . A s y n c C o m m a n d . c o m p l e t e ( A s y n c C o m m a n d . j a v a : 111 ) a t i o . l e t t u c e . c o r e . p r o t o c o l . C o m m a n d H a n d l e r . c o m p l e t e ( C o m m a n d H a n d l e r . j a v a : 746 ) a t i o . l e t t u c e . c o r e . p r o t o c o l . C o m m a n d H a n d l e r . d e c o d e ( C o m m a n d H a n d l e r . j a v a : 681 ) a t i o . l e t t u c e . c o r e . p r o t o c o l . C o m m a n d H a n d l e r . c h a n n e l R e a d ( C o m m a n d H a n d l e r . j a v a : 598 ) a t i o . n e t t y . c h a n n e l . A b s t r a c t C h a n n e l H a n d l e r C o n t e x t . i n v o k e C h a n n e l R e a d ( A b s t r a c t C h a n n e l H a n d l e r C o n t e x t . j a v a : 379 ) a t i o . n e t t y . c h a n n e l . A b s t r a c t C h a n n e l H a n d l e r C o n t e x t . i n v o k e C h a n n e l R e a d ( A b s t r a c t C h a n n e l H a n d l e r C o n t e x t . j a v a : 365 ) a t i o . n e t t y . c h a n n e l . A b s t r a c t C h a n n e l H a n d l e r C o n t e x t . f i r e C h a n n e l R e a d ( A b s t r a c t C h a n n e l H a n d l e r C o n t e x t . j a v a : 357 ) a t i o . n e t t y . c h a n n e l . D e f a u l t C h a n n e l P i p e l i n e DefaultSingleInvocationSpec.get(LettuceInvoker.java:589) at org.springframework.data.redis.connection.lettuce.LettuceServerCommands.getConfig(LettuceServerCommands.java:177) at org.springframework.data.redis.connection.DefaultedRedisConnection.getConfig(DefaultedRedisConnection.java:1416) at org.springframework.data.redis.listener.KeyspaceEventMessageListener.init(KeyspaceEventMessageListener.java:89) at org.springframework.data.redis.listener.KeyspaceEventMessageListener.afterPropertiesSet(KeyspaceEventMessageListener.java:137) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800) ... 24 more Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command `CONFIG`, with args beginning with: `GET`, `notify-keyspace-events`, 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.protocol.CommandHandler.complete(CommandHandler.java:746) at io.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:681) at io.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:598) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379) at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365) at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357) at io.netty.channel.DefaultChannelPipeline DefaultSingleInvocationSpec.get(LettuceInvoker.java:589)atorg.springframework.data.redis.connection.lettuce.LettuceServerCommands.getConfig(LettuceServerCommands.java:177)atorg.springframework.data.redis.connection.DefaultedRedisConnection.getConfig(DefaultedRedisConnection.java:1416)atorg.springframework.data.redis.listener.KeyspaceEventMessageListener.init(KeyspaceEventMessageListener.java:89)atorg.springframework.data.redis.listener.KeyspaceEventMessageListener.afterPropertiesSet(KeyspaceEventMessageListener.java:137)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1863)atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1800)...24moreCausedby:io.lettuce.core.RedisCommandExecutionException:ERRunknowncommandCONFIG,withargsbeginningwith:GET,notifykeyspaceevents,atio.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:147)atio.lettuce.core.internal.ExceptionFactory.createExecutionException(ExceptionFactory.java:116)atio.lettuce.core.protocol.AsyncCommand.completeResult(AsyncCommand.java:120)atio.lettuce.core.protocol.AsyncCommand.complete(AsyncCommand.java:111)atio.lettuce.core.protocol.CommandHandler.complete(CommandHandler.java:746)atio.lettuce.core.protocol.CommandHandler.decode(CommandHandler.java:681)atio.lettuce.core.protocol.CommandHandler.channelRead(CommandHandler.java:598)atio.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)atio.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)atio.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)atio.netty.channel.DefaultChannelPipelineHeadContext.channelRead(DefaultChannelPipeline.java:1410)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:800)
at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:480)
at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.lang.Thread.run(Thread.java:748)

报错原因原因是spring-session调用了CONFIG命令来配置Keyspace notifications功能。而线上环境的redis基于权限的考虑,禁止应用服务执行CONFIG命令,这样就导致了应用在初始化时抛出此异常。
具体解决方式如下:
1、打开redis的Keyspace notifications功能,在redis.conf配置文件里添加下面的配置项:
notify-keyspace-events Ex
由于我这边是客户提供海外的k8s服务器,我不能直接进行修改Redis配置文件,所以此方法行不通
2、关闭Spring-session使用CONFIG命令做操作
Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command `CONFIG`,redis,redis,kubernetes

@Configuration
@EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800)
public class RedisSessionConfig {
@Bean
public static ConfigureRedisAction configureRedisAction() {
    return ConfigureRedisAction.NO_OP;
}

}
到此,重新打包发布,项目成功启动运行,问题就可以解决了文章来源地址https://www.toymoban.com/news/detail-611798.html

到了这里,关于Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command `CONFIG`的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包