读书人

Java运用memcached

发布时间: 2013-07-09 09:50:47 作者: rapoo

Java使用memcached

1.加载commons-pool-1.5.6.jar、java_memcached-release_2.6.6.jar、slf4j-api-1.6.1.jar、slf4j-simple-1.6.1.jar

2.创建memcached工具类:

?

01public class MemcachedUtil {02?03????/**04?????* memcached客户端单例05?????*/06????private static MemCachedClient cachedClient = new MemCachedClient();07?????08????/**09?????* 初始化连接池10?????*/11????static {12????????//获取连接池的实例13????????SockIOPool pool = SockIOPool.getInstance();14?????????15????????//服务器列表及其权重16????????String[] servers = {"127.0.0.1:11211"};17????????Integer[] weights = {3};18?????????19????????//设置服务器信息20????????pool.setServers(servers);21????????pool.setWeights(weights);22?????????23????????//设置初始连接数、最小连接数、最大连接数、最大处理时间24????????pool.setInitConn(10);25????????pool.setMinConn(10);26????????pool.setMaxConn(1000);27????????pool.setMaxIdle(1000*60*60);28?????????29????????//设置连接池守护线程的睡眠时间30????????pool.setMaintSleep(60);31?????????32????????//设置TCP参数,连接超时33????????pool.setNagle(false);34????????pool.setSocketTO(60);35????????pool.setSocketConnectTO(0);36?????????37????????//初始化并启动连接池38????????pool.initialize();39?????????40????????//压缩设置,超过指定大小的都压缩41//????? cachedClient.setCompressEnable(true);42//????? cachedClient.setCompressThreshold(1024*1024);43????}44?????45????private MemcachedUtil(){46????}47?????48????public static boolean add(String key, Object value) {49????????return cachedClient.add(key, value);50????}51?????52????public static boolean add(String key, Object value, Integer expire) {53????????return cachedClient.add(key, value, expire);54????}55?????56????public static boolean put(String key, Object value) {57????????return cachedClient.set(key, value);58????}59?????60????public static boolean put(String key, Object value, Integer expire) {61????????return cachedClient.set(key, value, expire);62????}63?????64????public static boolean replace(String key, Object value) {65????????return cachedClient.replace(key, value);66????}67?????68????public static boolean replace(String key, Object value, Integer expire) {69????????return cachedClient.replace(key, value, expire);70????}71?????72????public static Object get(String key) {73????????return cachedClient.get(key);74????}75?????76}

3. 创建需要缓存的对象:

?

?

01public class UserBean implements Serializable {02?03????private static final long serialVersionUID = 9174194101246733501L;04?05????private String username;06?????07????private String password;08?????09????public UserBean(String username, String password) {10????????this.username = username;11????????this.password = password;12????}13?????14????public String getUsername() {15????????return username;16????}17?????18????public void setUsername(String username) {19????????this.username = username;20????}21?????22????public String getPassword() {23????????return password;24????}25?????26????public void setPassword(String password) {27????????this.password = password;28????}29?????30????@Override31????public int hashCode() {32????????final int prime = 31;33????????int result = 1;34????????result = prime * result35????????????????+ ((password == null) ? 0 : password.hashCode());36????????result = prime * result37????????????????+ ((username == null) ? 0 : username.hashCode());38????????return result;39????}40?41????@Override42????public boolean equals(Object obj) {43????????if (this == obj)44????????????return true;45????????if (obj == null)46????????????return false;47????????if (getClass() != obj.getClass())48????????????return false;49????????UserBean other = (UserBean) obj;50????????if (password == null) {51????????????if (other.password != null)52????????????????return false;53????????} else if (!password.equals(other.password))54????????????return false;55????????if (username == null) {56????????????if (other.username != null)57????????????????return false;58????????} else if (!username.equals(other.username))59????????????return false;60????????return true;61????}62?63????@Override64????public String toString() {65????????return "username:" + username + ",password:" + password;66????}67}

4.创建测试用例:

?

?

01public class MemcachedUtilTest {02?03????@Test04????public void testMemcached() {05????????MemcachedUtil.put("hello", "world", 60);06????????String hello = (String) MemcachedUtil.get("hello");07????????Assert.assertEquals("world", hello);08?????????09????????for(int i = 0; i < 10000000; ++i) {10????????????UserBean userBean = new UserBean("Jason" + i, "123456-" + i);11????????????MemcachedUtil.put("user" + i, userBean, 60);12????????????Object obj = MemcachedUtil.get("user" + i);13????????????Assert.assertEquals(userBean, obj);14????????}15????}16}


5.通过spring注入memcached:

?

?

<?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.xsd"><bean id="memcachedPool" factory-method="getInstance" init-method="initialize"><constructor-arg><value>neeaMemcachedPool</value></constructor-arg><property name="servers"><list><value>127.0.0.1:11211</value></list></property><property name="initConn"><value>20</value></property><property name="minConn"><value>10</value></property><property name="maxConn"><value>50</value></property><property name="nagle"><value>false</value></property><property name="socketTO"><value>3000</value></property></bean><bean id="memcachedClient" style="width: 752.390625px; line-height: 15.390625px; color: #404040; padding: 1px !important; margin-top: 1em !important; margin-right: 0px !important; margin-left: 0px !important; border: 0px !important; background-image: none !important; float: none !important; vertical-align: baseline !important; height: auto !important; font-family: Consolas, 'Bitstream Vera Sans Mono', 'Courier New', Courier, monospace !important;">01public class MemcachedSpringTest {02?03????private MemCachedClient cachedClient;04?????05????@Before06????public void init() {07????????ApplicationContext context = new ClassPathXmlApplicationContext("com/loujinhe/config/beans.xml");08????????cachedClient = (MemCachedClient)context.getBean("memcachedClient");09????}10?????11????@Test12????public void testMemcachedSpring() {13????????UserBean user = new UserBean("lou", "jason");14????????cachedClient.set("user", user);15????????UserBean cachedBean = (UserBean)user;16????????Assert.assertEquals(user, cachedBean);17????}18}

来自:http://blog.csdn.net/loujinhe/article/details/8491673

读书人网 >编程

热点推荐