redis過期key刪除
阿新 • • 發佈:2019-03-07
-- bsp his notify initial nts thread get pub
LZ一開始配置到啟動類裏面,結果出現了主線程阻塞的情況。
如下是流程:
首先修改配置文件redis.conf中的:notify-keyspace-events Ex,默認為notify-keyspace-events "" (註釋掉默認的,註意notify-keyspace-events Ex之前不能有空格)
啟動初始化類裏面的contextInitialized方法中加入以下代碼:(啟動一個線程執行訂閱功能)
Thread thread = new Thread(傳入需要參數--既然是redis監控必然需要jedis參數);
thread.start();
之後再編寫業務代碼
resource.psubscribe(pubSub, "__keyevent@0__:expired");
這裏是訂閱監聽,__keyevent@0__:expired是監聽的頻道
redis監聽類
public class Listener extends JedisPubSub{
private static Logger logger = Logger.getLogger(Listener.class);
private XXX xxx;
private YYY yyy;
public Listener(XXX xxx, YYY yyy) {
this.xxx= xxx;
this.yyy= yyy;
}
@Overridepublic void onPMessage(String pattern, String channel, String message) {
logger.info("onPMessage: channel[" + channel + "], message[" + message + "]");
{業務內容}
}
@Override
public void onMessage(String channel, String message) {
logger.info("onMessage: channel[" + channel + "], message[" + message + "]");}
@Override
public void onSubscribe(String channel, int subscribedChannels) {
logger.info("onSubscribe: channel[" + channel + "]," + "subscribedChannels[" + subscribedChannels + "]");
}
@Override
public void onUnsubscribe(String channel, int subscribedChannels) {
logger.info("onUnsubscribe: channel[" + channel + "], " + "subscribedChannels[" + subscribedChannels + "]");
}
@Override
public void onPUnsubscribe(String pattern, int subscribedChannels) {
logger.info("onPUnsubscribe: pattern[" + pattern + "]," + "subscribedChannels[" + subscribedChannels + "]");
}
@Override
public void onPSubscribe(String pattern, int subscribedChannels) {
logger.info("onPSubscribe: pattern[" + pattern + "], " + "subscribedChannels[" + subscribedChannels + "]");
}
}
redis過期key刪除