redis key過期監(jiān)聽的實現(xiàn)示例
更新時間:2024年03月19日 09:05:43 作者:劉小僧
在Redis中,我們可以為Key設(shè)置過期時間,當Key的過期時間到達后,Redis會自動將該Key標記為已失效,本文就來介紹一下redis key過期監(jiān)聽的實現(xiàn)示例,感興趣的可以了解一下
1、pom.xml文件中添加redis依賴
<!-- redis 緩存操作 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency>
2、application.yml文件中添加redis相關(guān)配置
# redis 配置 redis: # 地址 host: localhost # 端口,默認為6379 port: 6379 # 數(shù)據(jù)庫索引 database: 0 # 密碼 password: # 連接超時時間 timeout: 10s lettuce: pool: # 連接池中的最小空閑連接 min-idle: 0 # 連接池中的最大空閑連接 max-idle: 8 # 連接池的最大數(shù)據(jù)庫連接數(shù) 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過期監(jiān)聽器,繼承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(); } } }
到此這篇關(guān)于redis key過期監(jiān)聽的解決方法的文章就介紹到這了,更多相關(guān)redis key過期監(jiān)聽內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!