Redis开启键空间通知实现超时通知的步骤详解
Redis部分设置
修改配置文件redis.conf(Windows为redis.windows.conf)
- 打开该配置文件(位置取决于自己的安装位置),找到Eventnotification部分。
- 将notify-keyspace-eventsEx的注释打开或者添加该配置,其中E代表Keyevent,此种通知会返回key的名字,x代表超时事件。
- 如果notify-keyspace-events""配置没有被注释的话要注释掉,否则不会生效。
- 保存后重启redis,一定要使用当前配置文件重启,例如src/redis-serverredis.conf
SpringBoot部分设置
添加redis依赖
org.springframework.boot spring-boot-starter-data-redis
在全局配置文件application中添加redis配置
spring.redis.host=39.105.145.179 spring.redis.port=6379 spring.redis.database=0 spring.redis.listen-pattern=__keyevent@0__:expired
listen-pattern填写超时时间,意思为springboot将监听redis发出的超时键空间通知。
创建listener
publicclassTopicMessageListenerimplementsMessageListener{ @Override publicvoidonMessage(Messagemessage,byte[]bytes){ byte[]body=message.getBody(); byte[]channel=message.getChannel(); System.out.println(newString(body)); System.out.println(newString(channel)); } }
其中message为redis返回的通知,body为超时的key的名字,channel为超时事件
创建listener配置类
@Configuration publicclassRedisListenerConfiguration{ @Bean publicRedisMessageListenerContainergetListenerContainer(RedisConnectionFactoryconnectionFactory){ //创建连接容器 RedisMessageListenerContainercontainer=newRedisMessageListenerContainer(); //放入redis连接 container.setConnectionFactory(connectionFactory); //写入需要被监听的类型,即超时监听 Topictopic=newPatternTopic("__keyevent@0__:expired"); container.addMessageListener(newTopicMessageListener(),topic); returncontainer; } }
之后当有键值过期时,redis会发送通知被上面的TopicMessageListener接收,在该类中即可调用对应的业务方法进行业务处理。
总结
到此这篇关于Redis开启键空间通知实现超时通知的步骤的文章就介绍到这了,更多相关redis键空间通知内容请搜索毛票票以前的文章或继续浏览下面的相关文章希望大家以后多多支持毛票票!