1、pom.xml文件中添加redis依赖
1 | org.springframework.bootspring-boot-starter-data-redis |
2、application.yml文件中添加redis相关配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | # redis 配置 redis: # 地址 host: localhost # 端口,默认为6379 port: 6379 # 数据库索引 database: 0 # 密码 password: # 连接超时时间 timeout: 10s lettuce: pool: # 连接池中的最小空闲连接 min-idle: 0 # 连接池中的最大空闲连接 max-idle: 8 # 连接池的最大数据库连接数 max-active: 8 # #连接池最大阻塞等待时间(使用负值表示没有限制) max-wait: -1ms |
3、redis配置类RedisConfig中注册Bean–RedisMessageListenerContainer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | @Configuration @EnableCaching public class RedisConfig extends CachingConfigurerSupport { /** * redis key 过期事件订阅需要 * @param redisConnectionFactory * @return */ @Bean public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(redisConnectionFactory); return container; } } |
4、自定义redis key过期监听器,继承KeyExpirationEventMessageListener类
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @Component public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener { @Autowired private StringRedisTemplate stringRedisTemplate; public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) { super (listenerContainer); } @Override public void onMessage(Message message, byte [] pattern) { //注意:只能获取失效的key值,获取不到key对应的value值的。 String expireKey = message.toString(); try { if (!StringUtils.isEmpty(expireKey)) { //具体处理逻辑...... } } catch (Exception e) { e.printStackTrace(); } } } |
到此这篇关于redis key过期监听的解决方法的文章就介绍到这了,更多相关redis key过期监听内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!