redis開啟過期監聽

2021-10-21 14:02:20 字數 3569 閱讀 7555

第一步:配置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的鍵事件通知,客戶端訂閱這個通知事件,服務端...