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è)置開(kāi)始時(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)文章
SpringBoot3.x中spring.factories?SPI?服務(wù)發(fā)現(xiàn)機(jī)制的改變問(wèn)題小結(jié)
spring.factories其實(shí)是SpringBoot提供的SPI機(jī)制,底層實(shí)現(xiàn)是基于SpringFactoriesLoader檢索ClassLoader中所有jar引入的META-INF/spring.factories文件,這篇文章主要介紹了SpringBoot3.x中spring.factories?SPI?服務(wù)發(fā)現(xiàn)機(jī)制的改變,需要的朋友可以參考下2023-05-05
swagger注解@ApiModelProperty失效情況的解決
這篇文章主要介紹了swagger注解@ApiModelProperty失效情況的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
JVM自定義類加載器在代碼擴(kuò)展性實(shí)踐分享
這篇文章主要介紹了JVM自定義類加載器在代碼擴(kuò)展性實(shí)踐分享,一個(gè)類型從被加載到虛擬機(jī)內(nèi)存中開(kāi)始,到卸載出內(nèi)存為止,它的整個(gè)生命周期將會(huì)經(jīng)歷加載、驗(yàn)證、準(zhǔn)備、解析、初始化 、使用和卸載七個(gè)階段,其中驗(yàn)證、準(zhǔn)備、解析三個(gè)部分統(tǒng)稱為連接2022-06-06
Java入門基礎(chǔ)之Java的基本語(yǔ)法與Java所支持的數(shù)據(jù)類型
這篇文章主要介紹了Java入門基礎(chǔ)之Java的基本語(yǔ)法與Java所支持的數(shù)據(jù)類型,熟悉語(yǔ)法和數(shù)據(jù)類型通常是了解一種編程語(yǔ)言的開(kāi)始,需要的朋友可以參考下2016-02-02
使用Spring Security OAuth2實(shí)現(xiàn)單點(diǎn)登錄
在本教程中,我們將討論如何使用Spring Security OAuth和Spring Boot實(shí)現(xiàn)SSO - 單點(diǎn)登錄。感興趣的朋友跟隨小編一起看看吧2019-06-06
java 實(shí)現(xiàn)增量同步和自定義同步的操作
這篇文章主要介紹了java 實(shí)現(xiàn)增量同步和自定義同步的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
JDK與JRE的下載和安裝以及配置JDK環(huán)境變量圖文教程
JRE也就是(Java?RuntimeEnvironment)Java運(yùn)行環(huán)境,是運(yùn)行JAVA程序所必須的環(huán)境的集合,包含各種類庫(kù),下面這篇文章主要給大家介紹了關(guān)于JDK與JRE的下載和安裝以及配置JDK環(huán)境變量的相關(guān)資料,需要的朋友可以參考下2023-12-12
SpringMVC+Mybatis實(shí)現(xiàn)的Mysql分頁(yè)數(shù)據(jù)查詢的示例
本篇文章主要介紹了SpringMVC+Mybatis實(shí)現(xiàn)的Mysql分頁(yè)數(shù)據(jù)查詢的示例,具有一定的參考價(jià)值,有興趣的可以了解一下2017-08-08

