溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

memcached如何在java項目中使用

發(fā)布時間:2020-11-26 16:23:24 來源:億速云 閱讀:184 作者:Leah 欄目:編程語言

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

  1. java_memcached-release_2.6.6.jar

  2. commons-pool-1.5.6.jar

  3. slf4j-api-1.6.1.jar

  4. 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è)資訊頻道,感謝您對億速云的支持。

向AI問一下細節(jié)

免責聲明:本站發(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)容。

AI