1. 事件通過 redis 的訂閱與發布功能(pub/sub)來進行分發,故需要訂
閱 __keyevent@0__:expired 通道
0表示db0 根據自己的dbindex選擇合適的數字
2.修改 redis.conf 檔案
修改 notify-keyspace-events ex
#k 鍵空間通知,以__keyspace@__為字首
#e 鍵事件通知,以__keysevent@__為字首
#g del , expipre , rename 等型別無關的通用命令的通知, ...
#$ string命令
#l list命令
#s set命令
#h hash命令
#z 有序集合命令
#x 過期事件(每次key過期時生成)
#e 驅逐事件(當key在記憶體滿了被清除時生成)
#a g$lshzxe的別名,因此」ake」意味著所有的事件
3. 重啟redis , 即可測試失效事件的觸發, 監聽獲取的值為 key
1. 首先需要乙個訊息***類
packagecom.sogou.baike.testimport.testsubscribe;
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)
}
該類需要繼承jedispubsub ,並實現其抽象方法,通過方法的名稱很清楚的看出來,這個***是用來訂閱乙個頻道,在訂閱該頻道,取消訂閱,收到訊息等狀態會對應呼叫相關的方法
2.訂閱測試類
publicclass
testsubscribe
}
該類實現對頻道redischattest的訂閱監聽,頻道的訂閱,取消訂閱,收到訊息都會呼叫listener物件的對應方法
注意:subscribe是乙個阻塞的方法,在取消訂閱該頻道前,會一直阻塞在這,只有當取消了訂閱才會執行下面的other code,參考上面**,我在onmessage裡面收到訊息後,呼叫了this.unsubscribe(); 來取消訂閱,這樣才會執行後面的other code
3.發布訊息
測試類
public classtestpublish
}
這個類向頻道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的時候,需...