Redis超時觸發事件

2021-08-19 20:39:12 字數 1768 閱讀 9406

redis超時觸發事件

摘要:當裝置超過8小時未上線時傳送簡訊通知管理員,由於裝置資料通過redis維護,使用timer實現時。將timer快取到redis中再取出的時候,timer獲取不到。

參考資料:【redis高階功能-超時觸發事件】--

1、redis伺服器配置

2、監聽程式

3、訂閱程式

4、測試類

5、測試結果

1、redis伺服器配置

超時的監聽,並不需要自己發布,只需修改配置檔案redis.conf中的:

notify-keyspace-events ""

改為notify-keyspace-events ex

改完之後的配置檔案:

相關的配置說明:

# k 鍵空間通知,以__keyspace@__為字首 

# e 鍵事件通知,以__keyevent@__為字首

# g del , expipre , rename 等型別無關的通用命令的通知, ...

# $ string命令

# l list命令

# s set命令

# h hash命令

# z 有序集合命令

# x 過期事件(每次key過期時生成)

# e 驅逐事件(當key在記憶體滿了被清除時生成)

# a g$lshzxe的別名,因此」ake」意味著所有的事件

修改好配置檔案後,redis會對設定了expire的資料進行監聽,當資料過期時便會將其從redis中刪除。

2、監聽程式

public class keyexpiredlistener extends jedispubsub 

@override

public void onpmessage(string pattern, string channel, string message)

}

3、訂閱程式

public class subscriber 

}

4、測試類

public class testjedis 

}

5、測試結果執行訂閱程式subscriber

執行測試類testjedis

說明:redis資料庫分為0-15共16個庫,預設使用0資料庫,測試程式中jedis.select(n)為選擇資料庫。subscriber控制台只監聽了0庫的過期時間,因為訂閱程式設定了匹配pattern為__key*@0__:expired的。

訂閱pattern和channel可以參考:【redis訂閱與發布】

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 鍵空間通知,以 ...