java 使用memcached以及spring 配置memcached完整實(shí)例代碼
Memcached是一個(gè)高性能的分布式內(nèi)存對(duì)象緩存系統(tǒng),本文介紹了java 使用memcached以及spring 配置memcached完整實(shí)例代碼,分享給大家
本文涉及以下內(nèi)容:
1,要使用的jar包
2,java 使用memcached
3,spring 配置memcached
導(dǎo)入jar
- java_memcached-release_2.6.6.jar
- commons-pool-1.5.6.jar
- slf4j-api-1.6.1.jar
- slf4j-simple-1.6.1.jar
示例代碼
創(chuàng)建一個(gè)memcached 工廠類
public class CacheHelper { private static MemCachedClient mcc = new MemCachedClient(); private CacheHelper() { } static { String[] servers = {"71.0.0.29:2222", "71.0.0.29:2223"}; Integer[] weights = {1, 2}; SockIOPool pool = SockIOPool.getInstance(); pool.setServers(servers); pool.setWeights(weights); pool.setInitConn(5); pool.setMinConn(5); pool.setMaxConn(250); pool.setMaxIdle(1000 * 60 * 60 * 6); pool.setMaintSleep(30); pool.setNagle(false); // 禁用nagle算法 pool.setSocketConnectTO(0); pool.setSocketTO(3000); //3秒超時(shí) pool.setHashingAlg(3); pool.initialize(); } public static MemCachedClient getMemCachedClient() { return mcc; } }
測(cè)試
MemCachedClient mcc = CacheHelper.getMemCachedClient(); mcc.add("k8", "1234455"); MemCachedClient mcc = CacheHelper.getMemCachedClient(); UserModel user = new UserModel("12322222", "lihao", 28); boolean is = mcc.add("user2",user);
public void setInitConn( int initConn ) //設(shè)置開始時(shí)每個(gè)cache服務(wù)器的可用連接數(shù) public void setMinConn( int minConn ) //設(shè)置每個(gè)服務(wù)器最少可用連接數(shù) public void setMaxConn( int maxConn ) //設(shè)置每個(gè)服務(wù)器最大可用連接數(shù) public void setMaxIdle( long maxIdle ) //設(shè)置可用連接池的最長(zhǎng)等待時(shí)間 public void setMaintSleep( long maintSleep ) //設(shè)置連接池維護(hù)線程的睡眠時(shí)間 ,設(shè)置為0,維護(hù)線程不啟動(dòng)。維護(hù)線程主要通過(guò)log輸出 //socket的運(yùn)行狀況,監(jiān)測(cè)連接數(shù)目及空閑等待時(shí)間等參數(shù)以控制連接創(chuàng)建和關(guān)閉。 public void setNagle( boolean nagle ) //設(shè)置是否使用Nagle算法,因?yàn)槲覀兊耐ㄓ崝?shù)據(jù)量通常都比較大(相對(duì)TCP控制數(shù)據(jù))而且要求響 應(yīng)及時(shí),因此該值需要設(shè)置為false(默認(rèn)是true) ublic void setSocketTO( int socketTO ) //設(shè)置socket的讀取等待超時(shí)值 public void setSocketConnectTO( int socketConnectTO ) //設(shè)置socket的連接等待超時(shí)值 public void setHashingAlg( int alg ) // 設(shè)置hash算法 // alg=0 使用String.hashCode()獲得hash code,該方法依賴JDK,可能和其他客戶端不兼容,建議不使用 // alg=1 使用original 兼容hash算法,兼容其他客戶端 // alg=2 使用CRC32兼容hash算法,兼容其他客戶端,性能優(yōu)于original算法 // alg=3 使用MD5 hash算法 // 采用前三種hash算法的時(shí)候,查找cache服務(wù)器使用余數(shù)方法。采用最后一種hash算法查找cache 服務(wù)時(shí)使用一致性hash方法 //public void initialize() 設(shè)置完pool參數(shù)后最后調(diào)用該方法,啟動(dòng)pool。
memcached 和Spring 繼承
<!--memcached 客戶端 SocketPool--> <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool" factory- method="getInstance" init-method="initialize" destroy-method="shutDown"> <constructor-arg><value>neeaMemcachedPool</value></constructor-arg> <property name= "servers"> <list> <value>192.168.1.106:2222</value> <value>192.168.1.106:2223</value> </list> </property> <property name="weights"> <list> <value>1</value> <value>2</value> </list> </property> <property name="initConn"> <value>5</value> </property> <property name="minConn"> <value>5</value> </property> <property name="maxConn"> <value>250</value> </property> <property name="maintSleep"> <value>30</value> </property> <property name="nagle"> <value>false</value> </property> <property name="maxIdle"> <value>6000</value> </property> <property name="socketTO"> <value>3000</value> </property> </bean> <!--memcached client--> <bean id="memCachedClient" class="com.danga.MemCached.MemCachedClient"> <constructor-arg> <value>neeaMemcachedPool</value> </constructor-arg> </bean>
相關(guān)文章
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- 深入理解redis_memcached失效原理(小結(jié))
- ThinkPHP框架中使用Memcached緩存數(shù)據(jù)的方法
- .NET Core中使用Redis與Memcached的序列化問(wèn)題詳析
- CentOS 7.x安裝部署Memcached服務(wù)器的詳細(xì)方法
- 在Linux服務(wù)器上安裝 memcached的基本操作
- PHP內(nèi)存緩存功能memcached示例
- Laravel使用memcached緩存對(duì)文章增刪改查進(jìn)行優(yōu)化的方法
- Laravel Memcached緩存驅(qū)動(dòng)的配置與應(yīng)用方法分析
- 解決 .NET Core 中 GetHostAddressesAsync 引起的 EnyimMemcached 死鎖問(wèn)題
- 在windows系統(tǒng)下如何安裝memcached的講解
相關(guān)文章
詳解SpringBoot 應(yīng)用如何提高服務(wù)吞吐量
這篇文章主要介紹了Spring Boot 應(yīng)用如何提高服務(wù)吞吐量,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07SpringMVC攔截器——實(shí)現(xiàn)登錄驗(yàn)證攔截器的示例代碼
本篇文章主要介紹了SpringMVC攔截器——實(shí)現(xiàn)登錄驗(yàn)證攔截器的示例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。2017-02-02Java通過(guò)CMD方式讀取注冊(cè)表任意鍵值對(duì)代碼實(shí)踐
這篇文章主要介紹了Java通過(guò)CMD方式讀取注冊(cè)表任意鍵值對(duì)代碼實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下2019-06-06spring cloud中啟動(dòng)Eureka Server的方法
本篇文章主要介紹了spring cloud中啟動(dòng)Eureka Server的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01Java中的this、super、final關(guān)鍵字詳解
這篇文章主要介紹了Java中的this、super、final關(guān)鍵字詳解,它在方法內(nèi)部使用,表示這個(gè)方法所屬對(duì)象的引用,它在構(gòu)造器內(nèi)部使用,表示該構(gòu)造器正在初始化的對(duì)象,this 可以調(diào)用類的屬性、方法和構(gòu)造器,需要的朋友可以參考下2023-09-09Java如何實(shí)現(xiàn)Unicode和中文相互轉(zhuǎn)換
這篇文章主要介紹了Java如何實(shí)現(xiàn)Unicode和中文相互轉(zhuǎn)換問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-01-01Java Kafka實(shí)現(xiàn)延遲隊(duì)列的示例代碼
kafka作為一個(gè)使用廣泛的消息隊(duì)列,很多人都不會(huì)陌生。本文將利用Kafka實(shí)現(xiàn)延遲隊(duì)列,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以嘗試一下2022-08-08java實(shí)現(xiàn)斐波那契數(shù)列的3種方法
這篇文章主要介紹了java實(shí)現(xiàn)斐波那契數(shù)列的3種方法,有需要的朋友可以參考一下2014-01-01