1. 事件通過 redis 的訂閱與發布功能(pub/sub)來進行分發,故需要訂
閱 __keyevent@0__:expired 通道
0表示db0 根據自己的dbindex選擇合適的數字
2.修改 redis.conf 檔案
修改 notify-keyspace-events ex
# k 鍵空間通知,以__keyspace@__為字首3. 重啟redis , 即可測試失效事件的觸發, 監聽獲取的值為 key# e 鍵事件通知,以__keysevent@__為字首
# g del , expipre , rename 等型別無關的通用命令的通知, ...
# $ string命令
# l list命令
# s set命令
# h hash命令
# z 有序集合命令
# x 過期事件(每次key過期時生成)
# e 驅逐事件(當key在記憶體滿了被清除時生成)
# a g$lshzxe的別名,因此」ake」意味著所有的事件
1. 首先需要乙個訊息***類
package com.sogou.baike.testimport.testsubscribe;該類需要繼承jedispubsub ,並實現其抽象方法,通過方法的名稱很清楚的看出來,這個***是用來訂閱乙個頻道,在訂閱該頻道,取消訂閱,收到訊息等狀態會對應呼叫相關的方法import redis.clients.jedis.jedispubsub;
/**
* created by denglinjie on 2016/6/29.
*/
public class redismsgpubsublistener extends jedispubsub
@override
public void unsubscribe(string... channels)
@override
public void subscribe(string... channels)
@override
public void psubscribe(string... patterns)
@override
public void punsubscribe()
@override
public void punsubscribe(string... patterns)
@override
public void onmessage(string channel, string message)
@override
public void onpmessage(string pattern, string channel, string message)
@override
public void onsubscribe(string channel, int subscribedchannels)
@override
public void onpunsubscribe(string pattern, int subscribedchannels)
@override
public void onpsubscribe(string pattern, int subscribedchannels)
@override
public void onunsubscribe(string channel, int subscribedchannels)
}
2.訂閱測試類
public class testsubscribe該類實現對頻道redischattest的訂閱監聽,頻道的訂閱,取消訂閱,收到訊息都會呼叫listener物件的對應方法}
注意:subscribe是乙個阻塞的方法,在取消訂閱該頻道前,會一直阻塞在這,只有當取消了訂閱才會執行下面的other code,參考上面**,我在onmessage裡面收到訊息後,呼叫了this.unsubscribe(); 來取消訂閱,這樣才會執行後面的other code
3.發布訊息測試類
public class testpublish這個類向頻道redischattest發布訊息,第二步因為訂閱了該頻道,所以會收到該訊息。}
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失效
之前我使用過使用redisson這種redis的框架實現過延時傳送。今天突然好奇,在springboot中,redis能監聽到key失效事件嗎?經過查資料,答案是肯定的,可以監聽key失效,但是有缺陷,監聽事件裡面只能拿到key,不能拿到這個key對應的value。所以說,在生成這個key的時候,需...