Spring与memcached整合

Spring与memcached整合  import
org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.danga.MemCached.MemCachedClient;

public class MClient {
public static void main(String[]args){
  ApplicationContext ctx = new FileSystemXmlApplicationContext("src/applicationContext.xml");
//  ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
  MemCachedClient mc = (MemCachedClient) ctx.getBean("memcachedClient");
  for(int i = 0 ; i < 10 ;i++){
   mc.set("key "+i, "value "+i);
  }
  try{
   Thread.sleep(50);
   for(int i = 0 ; i<10 ; i++){
    System.out.println("get"+i+" value "+mc.get("key "+i));
   }
  }catch(Exception e){
  
  }
}
}

<bean id="memcachedPool" class="com.danga.MemCached.SockIOPool"
   factory-method="getInstance" init-method="initialize" destroy-method="shutDown">
   <constructor-arg value="vmarsMemcachedPool"/>
  
   <property name="servers">
    <list>
     <value>127.0.0.1:11211</value>
    </list>
   </property>
   <property name="initConn" value="20"/>
   
   <property name="minConn" value="10"/>
 
   <property name="maxConn" value="50"/>
   
   <property name="maintSleep" value="30"/>
  
   <property name="nagle" value="false"/>
 
   <property name="socketTO" value="3000"/>
  </bean>
  <bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient">
   <constructor-arg value="vmarsMemcachedPool"/>
   <property name="compressEnable" value="true"/>
   <property name="compressThreshold" value="4096"/>
  </bean>


package com.xiu.common.cache.memcached.client;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemcachedClientFactory {

private static MemCachedClient memCachedClient;
private MemcachedClientFactory() {

}
static {
/*初始化SockIOPool,管理memcached的连接池*/ 
        //String[] servers = { "10.0.0.67:11211","10.0.0.80:11311" }; 
        String[] servers = { "10.0.0.80:11311" }; 
        SockIOPool pool = SockIOPool.getInstance(); 
        pool.setServers(servers); 
        pool.setFailover(true); 
        pool.setInitConn(10); 
        pool.setMinConn(5); 
        pool.setMaxConn(2500); 
        pool.setMaintSleep(30); 
        pool.setNagle(false); 
        pool.setSocketTO(3000); 
        //设置hash算法,使用CRC32兼容hash算法,查找cache服务器使用余数方法
        pool.setHashingAlg(2);
        pool.setAliveCheck(true); 
        pool.initialize(); 
        /*建立MemcachedClient实例*/ 
memCachedClient = new MemCachedClient();

}


public static MemCachedClient getInstance() {

return memCachedClient;
     
}
}

package com.xiu.cache.memcached.client;

import java.util.Date;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.danga.MemCached.MemCachedClient;

public class MemcachedClientApp {

public static void main(String[] args) {

// 初始化应用程序上下文
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");

// Memcached 客户端
MemCachedClient client = (MemCachedClient) context.getBean("memcachedClient");

Person person = new Person();
person.setId("124");
person.setName("jack");

/* 将对象加入到memcached缓存 */
// 小于1000的值,除以1000以后都是0,即永不过期
boolean success = client.set("124", person, new Date(10000));// 十秒后过期

System.err.println(success);

// Thread.sleep(20000);

/* 从memcached缓存中按key值取对象 */

long start = System.currentTimeMillis();
Person person1 = (Person) client.get("124");

// String
// user=(String)client.get("sso_user:b6d67ebabc4f6566a21922cab59f165d");

long end = System.currentTimeMillis();

System.out.println("cost time is " + (end - start));
// memCachedClient.getMulti(keys)
// memCachedClient.getMultiArray(keys)

//清除服务器上所有数据
//client.flushAll();
//client.flushAll(servers);

/*
* if (user != null) {
*
* System.out.println(user); }
*/

if (person1 != null) {

System.out.println(person1.toString());
}
for (int i = 0; i < 10; i++) {
client.set("key " + i, "value " + i, new Date(10000));
}
try {
Thread.sleep(500);
client.flushAll();
for (int i = 0; i < 10; i++) {

System.out.println("get" + i + " value " + client.get("key " + i));
}
} catch (Exception e) {

}

}
}
<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<!-- the application context definition for the springapp DispatcherServlet -->

<!-- Memcached 连接池 -->
<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>10.0.0.67:11211</value>
<!--  <value>10.0.0.80:11311</value> -->
</list>
</property>
<property name="initConn">
<value>20</value>
</property>

<!--多服务器负载均衡权重 -->

<!-- 
<property name="weights">
<list>
<value>5</value>
<value>5</value>
</list>
</property>

-->

<property name="minConn">
<value>100</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="socketTO">
<value>3000</value>
</property>
</bean>

<!-- Memcached 客户端 -->
<bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient">
<constructor-arg>
<value>neeaMemcachedPool</value>
</constructor-arg>

</bean>



</beans>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值