Memcached是一個高性能的分布式內存對象緩存系統,本文介紹了java 使用memcached以及spring 配置memcached完整實例代碼,分享給大家
本文涉及以下內容:
1,要使用的jar包
2,java 使用memcached
3,spring 配置memcached
導入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
示例代碼
創建一個memcached 工廠類
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
|
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秒超時 pool.setHashingAlg( 3 ); pool.initialize(); } public static MemCachedClient getMemCachedClient() { return mcc; } } |
測試
1
2
3
4
5
6
7
|
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); |
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
public void setInitConn( int initConn ) //設置開始時每個cache服務器的可用連接數 public void setMinConn( int minConn ) //設置每個服務器最少可用連接數 public void setMaxConn( int maxConn ) //設置每個服務器最大可用連接數 public void setMaxIdle( long maxIdle ) //設置可用連接池的最長等待時間 public void setMaintSleep( long maintSleep ) //設置連接池維護線程的睡眠時間 ,設置為0,維護線程不啟動。維護線程主要通過log輸出 //socket的運行狀況,監測連接數目及空閑等待時間等參數以控制連接創建和關閉。 public void setNagle( boolean nagle ) //設置是否使用Nagle算法,因為我們的通訊數據量通常都比較大(相對TCP控制數據)而且要求響 應及時,因此該值需要設置為false(默認是true) ublic void setSocketTO( int socketTO ) //設置socket的讀取等待超時值 public void setSocketConnectTO( int socketConnectTO ) //設置socket的連接等待超時值 public void setHashingAlg( int alg ) // 設置hash算法 // alg=0 使用String.hashCode()獲得hash code,該方法依賴JDK,可能和其他客戶端不兼容,建議不使用 // alg=1 使用original 兼容hash算法,兼容其他客戶端 // alg=2 使用CRC32兼容hash算法,兼容其他客戶端,性能優于original算法 // alg=3 使用MD5 hash算法 // 采用前三種hash算法的時候,查找cache服務器使用余數方法。采用最后一種hash算法查找cache 服務時使用一致性hash方法 //public void initialize() 設置完pool參數后最后調用該方法,啟動pool。 |
memcached 和Spring 繼承
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
|
<!--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 > |
相關文章
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。
原文鏈接:http://www.jianshu.com/p/6f264bf5d9f9?utm_source=tuicool&utm_medium=referral