Redis監聽Key失效

2021-10-06 12:32:08 字數 869 閱讀 5347

之前我使用過使用redisson這種redis的框架實現過延時傳送。今天突然好奇,在springboot中,redis能監聽到key失效事件嗎?經過查資料,答案是肯定的,可以監聽key失效,但是有缺陷,監聽事件裡面只能拿到key,不能拿到這個key對應的value。所以說,在生成這個key的時候,需要把這個key對應的value存放到資料庫中,以便在失效事件中再去查詢一下資料庫。

redis的key失效事件在springboot中可以做一些訂閱功能,比如延時傳送郵件等。

配置的話像下面一樣就好了。

@configuration

public class redisconfig ....

@bean

public redismessagelistenercontainer container(redisconnectionfactory connectionfactory)

消費端

@component

public class redi***piredlistener extends keyexpirationeventmessagelistener ...

private static final string order_prefix = "order:";

public redi***piredlistener(redismessagelistenercontainer listenercontainer)

@override

public void onmessage(message message, byte pattern) ", message);

//do something ...}}

}

redis 超時失效key 的監聽觸發

redis自2.8.0之後版本提供keyspace notifications功能,允許客戶訂閱pub sub頻道,以便以某種方式接收影響redis資料集的事件。可能收到的事件的例子如下 所有影響給定鍵的命令。所有接收lpush操作的金鑰。所有金鑰在資料庫中過期0。因為 redis 目前的訂閱與發布...

redis 超時失效key 的監聽觸發

1.事件通過 redis 的訂閱與發布功能 pub sub 來進行分發,故需要訂 閱 keyevent 0 expired 通道 0表示db0 根據自己的dbindex選擇合適的數字 2.修改 redis.conf 檔案 修改 notify keyspace events ex k 鍵空間通知,以 ...

redis 超時失效key 的監聽觸發

1.事件通過 redis 的訂閱與發布功能 pub sub 來進行分發,故需要訂 閱 keyevent 0 expired 通道 0表示db0 根據自己的dbindex選擇合適的數字 2.修改 redis.conf 檔案 修改 notify keyspace events ex k 鍵空間通知,以 ...