redis動態指定切換庫和監聽key失效

2021-10-05 16:52:50 字數 3062 閱讀 4007

redis動態指定切換庫的方式很多,比如註解+aop,本方法是比較簡單的一種,沒有使用註解

重點:  在redis的配置redis.conf檔案中設定notify-keyspace-events ex 

1 、redisconfig

package com.oceam.redis;

import com.fasterxml.jackson.annotation.jsonautodetect;

import com.fasterxml.jackson.annotation.propertyaccessor;

import org.springframework.context.annotation.bean;

import org.springframework.context.annotation.configuration;

import org.springframework.data.redis.connection.redisconnectionfactory;

import org.springframework.data.redis.core.redistemplate;

import org.springframework.data.redis.listener.patterntopic;

import org.springframework.data.redis.listener.redismessagelistenercontainer;

import org.springframework.data.redis.serializer.jackson2jsonredisserializer;

import org.springframework.data.redis.serializer.stringredisserializer;

/** * redis配置類

* */

@configuration

public class redisconfig

@bean

redismessagelistenercontainer container(redisconnectionfactory connectionfactory)

}

2、指定庫監聽類

package com.oceam.redis;

import org.springframework.data.redis.connection.message;

import org.springframework.data.redis.connection.messagelistener;

/** * 指定redis庫的key失效時候監聽類

* cdn

* 2020/05/02 16:38

*/public class redi***piredlistener implements messagelistener

}

3、全域性監聽

package com.oceam.redis;

import org.springframework.data.redis.connection.message;

import org.springframework.data.redis.listener.keyexpirationeventmessagelistener;

import org.springframework.data.redis.listener.redismessagelistenercontainer;

import org.springframework.stereotype.component;

/** * 不指定redis資料庫(全域性監聽)

* cdn

* 2020/05/02 16:10

*/@component

public class rediskeyexpirationlistener extends keyexpirationeventmessagelistener

/*** 針對 redis 資料失效事件,進行資料處理

** @param message

* @param pattern

*/@override

public void onmessage(message message, byte pattern)

}

到此為止,監聽redis的key失效和指定庫監聽redis的key失效已將完成

(二) 指定存庫

redis有15個庫,預設是存在第乙個,即小標是0 的庫

/**

* 指定庫操作

** @param key 鍵

* @param value 值

* @param time 時間(秒) time要大於0 如果time小於等於0 將設定無限期

* @param dbindex 要存的庫位置

* @return true成功 false 失敗

*/public boolean setvaluetodatabase(string key, object value, long time, integer dbindex)

if (time > 0) else

//重置為預設的第0個庫

redisconnectionfactory.setdatabase(0);

redistemplate.setconnectionfactory(redisconnectionfactory);

redisconnectionfactory.resetconnection();

return true;

} catch (exception e)

}/**

* desc: 獲取指定庫中的指定key的value

* param:

* @dbindex 資料庫

* author: cdn

* date: 2020/5/2

*/public object getvaluefromredisdatabase(string key, integer dbindex)

Oracle靜態監聽和動態監聽

一 靜態註冊 靜態註冊指例項啟動時讀取listener.ora配置檔案,將例項和服務註冊到監聽程式。無論何時啟動乙個資料庫,預設都有兩條資訊註冊到 中 例項和服務。sid list listener sid list sid desc global dbname ora8 sid name test...

oracle靜態監聽和動態監聽

oracle靜態監聽和動態監聽 一 什麼是註冊?註冊就是將資料庫作為乙個服務註冊到監聽程式。客戶端不需要知道資料庫名和例項名,只需要知道該資料庫對外提供的服務名 就可以申請連線到資料庫。這個服務名可能與例項名一樣,也有可能不一樣。在資料庫伺服器啟動過程中,資料庫伺服器會向監聽程式註冊相應的服務 無論...

linux指定動態庫路徑

通常有兩種方法 1.把動態庫放到系統庫或者在系統庫中做乙個鏈結,這樣編譯和執行都會去系統庫找。這樣容易引起系統庫混亂。2.export ld library path 指定庫搜尋路徑,但是這樣登出再登陸就沒了。還有第三種方法,編譯時使用 wl,rpath,wl,路徑 這樣就能把路徑編譯到可執行檔案裡...