Caused by: io.lettuce.core.RedisCommandExecutionException: ERR unknown command CONFIG
项目本机启动运行正常,打成jar包发布测试环境–公司测试服务器正常启动运行,项目上线前需要发布在客户购买的亚马逊的K8S服务器,同时客户在亚马逊购买了Redis服务器,PostgreSQL服务器,所以新建了配置文件,将代码构建为镜像推送至客户服务器,然后进行启动编译,连接数据库一切正常,但是到连接Redis时一直报错,开始运维只给了报错截图,报错信息并不全,导致一直找不到具体原因走了许多弯路,也并没有解决问题
截图如下!
通过这张图片一直以为是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:ERRunknowncommand‘CONFIG‘,withargsbeginningwith:‘GET‘,‘notify−keyspace−events‘,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命令做操作
文章来源:https://www.toymoban.com/news/detail-611798.html
@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模板网!