redis key过期监听的实现示例
作者:刘小僧
在Redis中,我们可以为Key设置过期时间,当Key的过期时间到达后,Redis会自动将该Key标记为已失效,本文就来介绍一下redis key过期监听的实现示例,感兴趣的可以了解一下
1、pom.xml文件中添加redis依赖
<!-- redis 缓存操作 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、application.yml文件中添加redis相关配置
# 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
@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类
@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过期监听内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!