網站首頁 編程語言 正文
1、Redis配置修改
事件通過 Redis 的訂閱與發布功能(pub/sub)來進行分發, 故需要開啟 redis 的事件監聽與發布
修改 redis.conf 文件(Windows上是redis.windows.conf和redis.windows-service.conf)
notify-keyspace-events Ex
2、 redis的配置類開啟 redis過期監聽
/**
* 開啟 redis過期監聽
* @param connectionFactory
* @return
*/
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
3、定義 key過期監聽器,繼承 KeyExpirationEventMessageListener
@Slf4j
@Component
public class RedisListener extends KeyExpirationEventMessageListener {
public RedisListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
/**
* 針對redis緩存數據失效事件,進行后續數據處理
*
* @param message
* @param pattern
*/
@Override
public void onMessage(Message message, byte[] pattern) {
/** key ,會把key返回,而不會將value返回*/
String expiredKey = message.toString();
log.info("過期緩存key:" + expiredKey);
try {
//登陸信息過期 若expiredKey以login開始則打印log
if (expiredKey.startsWith("login")){
log.info("---------redis 過期緩存處理");
}
} catch (Exception e) {
log.info("---------redis 過期緩存處理 異常---------");
e.printStackTrace();
}
}
}
通過開啟key過期的事件通知,當key過期時,會發布過期事件;我們定義key過期事件的監聽器,當key過期時,就能收到回調通知。
注意:
1)由于Redis key過期刪除是定時+惰性,當key過多時,刪除會有延遲,回調通知同樣會有延遲。
2)回調通知是一次性的,沒有ack機制,若收到通知后處理失敗,將不再收到通知。
3)回調通知只能拿到key,拿不到value。
使用場景:
1)可以實現延時隊列
消息作為key,將需要延遲的時間設置為key的TTL,當key過期時,在監聽器收到通知,達到延遲的效果。
原文鏈接:https://blog.csdn.net/god_sword_/article/details/131508245
- 上一篇:沒有了
- 下一篇:沒有了
相關推薦
- 2022-02-16 dart總結(三.類,接口,繼承,多態,mixins和枚舉詳解)
- 2023-03-04 React中實現keepalive組件緩存效果的方法詳解_React
- 2022-10-01 使用python+Flask實現日志在web網頁實時更新顯示_python
- 2022-12-22 python3中超級好用的日志模塊-loguru模塊使用詳解_python
- 2022-05-15 Qt Linux獲取bios ID作為唯一標識
- 2022-09-22 elementui select選擇器獲取選中拿到當前對象
- 2022-04-01 containerd常用命令
- 2022-01-16 1.把字符串轉化為時間戳,再將時間戳轉化為Date對象 /** *@parame time = 2
- 欄目分類
-
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支