您好,登錄后才能下訂單哦!
memcached如何在java項目中使用?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
Memcached是一個高性能的分布式內(nèi)存對象緩存系統(tǒng),本文介紹了java 使用memcached以及spring 配置memcached完整實例代碼,分享給大家
本文涉及以下內(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)建一個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秒超時 pool.setHashingAlg(3); pool.initialize(); } public static MemCachedClient getMemCachedClient() { return mcc; } }
測試
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è)置開始時每個cache服務(wù)器的可用連接數(shù) public void setMinConn( int minConn ) //設(shè)置每個服務(wù)器最少可用連接數(shù) public void setMaxConn( int maxConn ) //設(shè)置每個服務(wù)器最大可用連接數(shù) public void setMaxIdle( long maxIdle ) //設(shè)置可用連接池的最長等待時間 public void setMaintSleep( long maintSleep ) //設(shè)置連接池維護線程的睡眠時間 ,設(shè)置為0,維護線程不啟動。維護線程主要通過log輸出 //socket的運行狀況,監(jiān)測連接數(shù)目及空閑等待時間等參數(shù)以控制連接創(chuàng)建和關(guān)閉。 public void setNagle( boolean nagle ) //設(shè)置是否使用Nagle算法,因為我們的通訊數(shù)據(jù)量通常都比較大(相對TCP控制數(shù)據(jù))而且要求響 應(yīng)及時,因此該值需要設(shè)置為false(默認是true) ublic void setSocketTO( int socketTO ) //設(shè)置socket的讀取等待超時值 public void setSocketConnectTO( int socketConnectTO ) //設(shè)置socket的連接等待超時值 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算法的時候,查找cache服務(wù)器使用余數(shù)方法。采用最后一種hash算法查找cache 服務(wù)時使用一致性hash方法 //public void initialize() 設(shè)置完pool參數(shù)后最后調(diào)用該方法,啟動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>
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。