springboot启动报错:ERR config is disabled command

389 阅读1分钟

背景

在springboot项目中使用redis失效key回调实现延迟队列

问题

配置类如下

@Component
@Slf4j
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {

    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
        super.setKeyspaceNotificationsConfigParameter(StringUtils.EMPTY);
    }


    @Override
    public void onMessage(Message message, byte[] pattern) {
 
    }

}

配置监听器后,springboot启动报错:ERR config is disabled command

原因

经排查这个监听类实现在启动时候会向redis发送配置命令,配置延迟参数,由于云服务器关闭了远程配置redis选项导致启动报错

解决

redis延迟参数在云服务器端管理页面设置。 springboot 项目中覆写监听类,避免启动时候设置redis延迟参数。

    @Override
    public void setKeyspaceNotificationsConfigParameter(String keyspaceNotificationsConfigParameter) {
        // 注意这里覆写父类,不在java应用中设置监听.   需要在服务器端设置
        super.setKeyspaceNotificationsConfigParameter(StringUtils.EMPTY);
    }

全部类内容如下:

@Component
@Slf4j
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {

    public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
        super.setKeyspaceNotificationsConfigParameter(StringUtils.EMPTY);
    }

    @Override
    public void setKeyspaceNotificationsConfigParameter(String keyspaceNotificationsConfigParameter) {
        // 注意这里覆写父类,不在java应用中设置监听.   需要在服务器端设置
        super.setKeyspaceNotificationsConfigParameter(StringUtils.EMPTY);
    }


    @Override
    public void onMessage(Message message, byte[] pattern) {
 
    }

}