上面成功建立了memcache,这里是与spring集成的实例:
废话不多说,上代码:
memcache.properties
memcache.server=127.0.0.1\:11211 memcache.initConn=20 memcache.minConn=10 memcache.maxConn=50 memcache.maintSleep=3000 memcache.nagle=false memcache.socketTO=3000
spring-memcache.xml
<?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"> <!-- 引入memcachePool配置文件 --> <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations" value="classpath:/memcache.properties"/> </bean> <!-- 配置memcache连接池 --> <bean id="memcachedPool" class="com.danga.MemCached.SockIOPool" factory-method="getInstance" init-method="initialize" destroy-method="shutDown"> <constructor-arg value="memcachedPool"></constructor-arg> <property name="servers" value="${memcache.server}"></property> <property name="initConn" value="${memcache.initConn}"></property> <property name="minConn" value="${memcache.minConn}"></property> <property name="maxConn" value="${memcache.maxConn}"></property> <property name="maintSleep" value="${memcache.maintSleep}"></property> <property name="nagle" value="${memcache.nagle}"></property> <property name="socketTO" value="${memcache.socketTO}"></property> </bean> <!-- 配置memcache客户端 --> <bean id="memCachedClient" class="com.danga.MemCached.MemCachedClient"> <constructor-arg value="memcachedPool"></constructor-arg> </bean> </beans>
MemCachedManager.java
import java.util.Date; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class MemCachedManager { // 创建全局的唯一实例 private static MemCachedClient mcc = get();//= new MemCachedClient(); protected static MemCachedManager memCachedManager = new MemCachedManager(); private static MemCachedClient get(){ ApplicationContext context = new ClassPathXmlApplicationContext("spring-memcache.xml"); return (MemCachedClient) context.getBean("memCachedClient"); } /** * 保护型构造方法,不允许实例化! * */ protected MemCachedManager() { } /** * 获取唯一实例. * * @return */ public static MemCachedManager getInstance() { return memCachedManager; } public static MemCachedClient getInstance2() { return mcc; } /** * 添加一个指定的值到缓存中. * * @param key * @param value * @return */ public boolean add(String key, Object value) { return mcc.add(key, value); } public boolean set(String key, Object value) { return mcc.set(key, value); } public boolean add(String key, Object value, Date expiry) { return mcc.add(key, value, expiry); } public boolean replace(String key, Object value) { return mcc.replace(key, value); } public boolean replace(String key, Object value, Date expiry) { return mcc.replace(key, value, expiry); } /** * 根据指定的关键字获取对象. * * @param key * @return */ public Object get(String key) { return mcc.get(key); } public void flush(){ mcc.flushAll(); } }
实体:
import java.io.Serializable; public class Bean implements Serializable { private static final long serialVersionUID = 1945562032261336919L; private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } }
测试类:
测试结果:import junit.framework.TestCase; import org.junit.Test; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; public class TestMemcached extends TestCase { @Test public void testCache() { Bean tb = new Bean(); MemCachedClient m=MemCachedManager.getInstance2(); tb.setName("ee"); System.out.println("-------"+m); boolean b = m.add("beans", tb); System.out.println(b); Bean tb1 = (Bean) m.get("beans"); System.out.println(tb1); System.out.println(tb1.getName()); System.out.println(m.keyExists("beans")); System.out.println(m.keyExists("s")); System.out.println("name=" + tb1.getName()); } }
-------com.danga.MemCached.MemCachedClient@592c17ce false com.ilindo.test.Bean@42701c57 ee true false name=ee