有些業務需要延遲一定時間後執行,比如訂單提交後15分鐘未支付就自動關閉,這裡只是舉個例子。我們可以通過監聽redis的key過期事件來實現這個功能。
新增redis依賴
org.springframework.boot
spring-boot-starter-data-redis
配置訊息監聽容器,把redis連線工廠放進去
@configuration
public class redislistenerconfig
}
繼承org.springframework.data.redis.listener.keyexpirationeventmessagelistener類,監聽過期事件。注意message裡的是失效的key,拿不到value。
@slf4j
@component
public class rediskeyexpirationlistener extends keyexpirationeventmessagelistener
/*** 針對 redis 資料失效事件,進行資料處理
* @param message key
* @param pattern pattern
*/@override
public void onmessage(message message, byte pattern) ", expiredkey);
super.onmessage(message, pattern);
}}
@component
public class timetasktest
}
redis過期key監聽
修改配置檔案 redis.conf notify keyspace events ex k 鍵空間通知,以 keyspace 為字首 e 鍵事件通知,以 keysevent 為字首 g del expipre rename 等型別無關的通用命令的通知,string命令 l list命令 s set命...
redis監聽key過期
檢視redis版本 redis server v redis server version 要使redis可以監聽到key過期,需新增配置,實現原理 在redis2.8之後的版本中,當我們將對使用redis快取起來並設定快取失效時間的時候,會觸發redis的鍵事件通知,客戶端訂閱這個通知事件,服務端...
Redis如何過期key
過期redis key有兩種方式 被動和主動方式。被動過期 當一些客戶端要訪問這個key時,發現它已經過期,則刪除。顯然這樣做是不夠的,因為可能有些key不會被再次訪問。這種情況下也同樣要刪除這些過期的key。因此就有了主動過期的方式。主動過期 redis會定期,通過隨機的方式在設定了過期時間的ke...