第一步:配置redis的過期失效監聽,需要修改redis.conf配置檔案,找到 event notification (事件通知)這個配置
將notify-keyspace-events ""
修改為notify-keyspace-events "ex"
引數解釋,看配置檔案或者官網都有詳細解釋,如下:
############################# event notification ##############################
# 鍵空間通知使得客戶端可以通過訂閱頻道或模式,來接收那些以某種方式改動了 redis 資料集的事件。
# 因為開啟鍵空間通知功能需要消耗一些 cpu ,所以在預設配置下,該功能處於關閉狀態。
# notify-keyspace-events 的引數可以是以下字元的任意組合,
# 它指定了伺服器該傳送哪些型別的通知:
# k 鍵空間通知,所有通知以 __keyspace@__ 為字首
# e 鍵事件通知,所有通知以 __keyevent@__ 為字首
# g del 、 expire 、 rename 等型別無關的通用命令的通知
# $ 字串命令的通知
# l 列表命令的通知
# s 集合命令的通知
# h 雜湊命令的通知
# z 有序集合命令的通知
# x 過期事件:每當有過期鍵被刪除時傳送
# e 驅逐(evict)事件:每當有鍵因為 maxmemory 政策而被刪除時傳送
# a 引數 g$lshzxe 的別名
# 輸入的引數中至少要有乙個 k 或者 e,否則的話,不管其餘的引數是什麼,都不會有任何 通知被分發。
第二步: 重新啟動redis,沒什麼好說的,修改配置檔案以及啟動redis不會自行度娘
第三步:驗證配置是否成功
執行redis客戶端:
redis-cli
選擇你要監聽的庫 @後面的值,redis預設連線0號庫,這裡不做修改了,執行監聽命令:
psubscribe __keyevent@0__:expired
在啟動乙個客戶端redis-cli,這裡也是預設0號庫,不做修改,設定乙個10秒過期的key:
setex mykey 10 redis
拓展:redis setex 命令為指定的 key 設定值及其過期時間。如果 key 已經存在, setex 命令將會替換舊的值。
10秒後,可以看到監聽埠可以接收到失效的redis的key。如圖
1.引入redis依賴,這塊不做過多解釋,不會的去蒐集成reids
>
>
org.springframework.bootgroupid
>
>
spring-boot-starter-data-redisartifactid
>
dependency
>
2.建立兩個類,第乙個類配置 redislistenerconfig 實現監聽 redis key 過期時間,我這裡是監聽所有db的過期事件__keyevent@*__:expired,根據自己的業務需求自行配置,@幾號庫,@*是所有
redislistenerconfig:
import
org.springframework.beans.factory.annotation.
autowired
;import
org.springframework.context.annotation.
bean
;import
org.springframework.context.annotation.
configuration
;import
org.springframework.data.redis.connection.
redisconnectionfactory
;import
org.springframework.data.redis.listener.
patterntopic
;import
org.springframework.data.redis.listener.
redismessagelistenercontainer
;/**
* @classname redislistenerconfig
* @description redis監聽配置
* @author cl
* @date 2021-09-09 10:45
*/@configuration
public
class
redislistenerconfig
}
第二個類,定義*** redislisten,監聽 redis key 過期事件,針對 redis 資料失效事件,進行業務處理
redislisten:
import
com.tanghe.common.constant.
redisconstants
;import
org.springframework.beans.factory.annotation.
autowired
;import
org.springframework.data.redis.connection.
message
;import
org.springframework.data.redis.connection.
messagelistener
;import
org.springframework.data.redis.core.
redistemplate
;import
org.springframework.data.redis.serializer.
redisserializer
;import
org.springframework.stereotype.
component
;/**
* @classname redislisten
* @description redislisten
* @author cl
* @date 2021-09-09 10:46
*/@slf4j
@component
public
class
redislisten
implements
messagelistener
}}
redis過期key監聽
修改配置檔案 redis.conf notify keyspace events ex k 鍵空間通知,以 keyspace 為字首 e 鍵事件通知,以 keysevent 為字首 g del expipre rename 等型別無關的通用命令的通知,string命令 l list命令 s set命...
redis過期事件監聽
1 redis配置檔案修改 redis.windows.conf與 redis.windows service.conf都要修改 notify keyspace events ex2 新增redis配置檔案,訂閱過期事件訊息 keyevent 1 expired 其中1代表操作redis中的db1,...
redis監聽key過期
檢視redis版本 redis server v redis server version 要使redis可以監聽到key過期,需新增配置,實現原理 在redis2.8之後的版本中,當我們將對使用redis快取起來並設定快取失效時間的時候,會觸發redis的鍵事件通知,客戶端訂閱這個通知事件,服務端...