本文涉及以下內(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è)置可用連接池的最長等待時(shí)間
public void setMaintSleep( long maintSleep )
設(shè)置連接池維護(hù)線程的睡眠時(shí)間 ,設(shè)置為0,維護(hù)線程不啟動(dòng)。維護(hù)線程主要通過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)文章
Memcached 安裝使用存儲(chǔ)
http://www.reibang.com/p/2b3c43c1778c
java 使用memcached以及spring 配置memcached
http://www.reibang.com/p/6f264bf5d9f9
memcached優(yōu)化
http://www.reibang.com/p/789d208036f5