監聽redis的KEY失效 作為一個觸發器來完成小程式的定時提醒功能
阿新 • • 發佈:2021-02-02
技術標籤:java
前言
1):業務邏輯是這樣的>>小程式中有一個提醒功能,該功能有一個提醒時間,時間到了就給使用者傳送一個提醒,這裡的提醒採用的微信的訂閱訊息服務
2):由於這個業務的並沒有要求太嚴格的實時性,誤差幾分鐘都是可以的。所以這裡採用redis的監聽器
內容
1):配置redis (在redis.conf中放開這行)
2):在程式碼中新增監聽
@Configuration public class RedisListenerConfig { @Bean RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) { RedisMessageListenerContainer container = new RedisMessageListenerContainer(); container.setConnectionFactory(connectionFactory); return container; } }
3):新增鍵失效後需要觸發的程式碼
@Component public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener { private static Logger logger = LoggerFactory.getLogger(RedisKeyExpirationListener.class); private static final Topic KEYEVENT5_EXPIRED_TOPIC = new PatternTopic("[email protected]
__:expired"); //設定監聽庫為13 public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) { super(listenerContainer); } @Override public void doRegister(RedisMessageListenerContainer listenerContainer) { listenerContainer.addMessageListener(this, KEYEVENT5_EXPIRED_TOPIC); } /** * 針對redis資料失效事件,進行資料處理 * @param message * @param pattern */ @Override public void onMessage(Message message, byte[] pattern) { String expiredKey = message.toString();//獲取當前失效的ID /** (你的業務邏輯) * 在這個地方根據失效的鍵去資料庫查詢相關資料 然後呼叫微信的訂閱通知再發送給使用者 */ }
4)需要看微信訂閱通知的 請點選這裡