出于安全考虑,华为云上的DCS实例都运行于保护模式下,在这种模式下不支持远程修改redis参数配置,因此对于应用程序一些可能涉及到修改redis参数的使用需小心处理。
目前我们项目中spring-session + redis可能会存在redis参数问题。Spring-session为用户提供了session过期销毁的监听,但是因为session存储在redis中,因此这部分的功能需要redis过期键事件通知。此部分通知功能需要修改redis参数‘notify-keyspace-events’为‘Egx’。
因此spring-session在配置时会自动连接redis并配置notify-keyspace-events,保护模式下的redis不支持远程修改,会造成启动时项目报错。因此,我们需要对DCS实例和项目做修改。
1. 对DCS,我们需要通过华为账号进入实例控制台,点击‘参数修改’修改notify-keyspace-events值为Egx。
2. 对于spring-session,我们需要在加载RedisHttpSessionConfiguration bean的xml中引入 <util:constant static-field="org.springframework.session.data.redis.config.ConfigureRedisAction.NO_OP"/> 使spring-session不去修改redis参数;在该xml的头部引入说明xmlns:util=http://www.springframework.org/schema/util
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util.xsd
项目中若有其他方法需要修改redis参数的,请使用华为云DCS实例控制台修改redis参数。