1. 程式人生 > 其它 >監聽redis的KEY失效 作為一個觸發器來完成小程式的定時提醒功能

監聽redis的KEY失效 作為一個觸發器來完成小程式的定時提醒功能

技術標籤: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)需要看微信訂閱通知的 請點選這裡