Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7914字,纯文字阅读大概需要12分钟。
内容图文
1 改动 pom.xml ,加入依赖文件:
< dependency > < groupId > com.whalin </ groupId > < artifactId > Memcached -Java-Client </ artifactId > < version > 3.0.2 </ version > </ dependency > |
2 加入 memcached-context.xml ,注意要在 web.xml 中进行配置
<? xml version = "1.0" encoding = "UTF-8" ?> < beans:beans xmlns = "http://www.springframework.org/schema/mvc" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xmlns:beans = "http://www.springframework.org/schema/beans" xmlns:p = "http://www.springframework.org/schema/p" xmlns:tx = "http://www.springframework.org/schema/tx" xmlns:task = "http://www.springframework.org/schema/task" xmlns:context = "http://www.springframework.org/schema/context" xsi:schemaLocation = "http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.2.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" >
<!— 注意以下的: memcache 在使用的时候会用到 --> < beans:bean id = "memcache" class = "com.whalin.MemCached.SockIOPool" factory-method = "getInstance" init-method = "initialize" destroy-method = "shutDown" > < beans:constructor-arg > < beans:value > memcache </ beans:value > </ beans:constructor-arg > < beans:property name = "servers" > < beans:list > <!--server地址--> < beans:value > 172.16.24.27:11211 </ beans:value > </ beans:list > </ beans:property > <!--初始化时对每一个server建立的连接数目--> < beans:property name = "initConn" > < beans:value > 20 </ beans:value > </ beans:property > <!--每一个server建立最小的连接数--> < beans:property name = "minConn" > < beans:value > 10 </ beans:value > </ beans:property > <!--每一个server建立最大的连接数--> < beans:property name = "maxConn" > < beans:value > 50 </ beans:value > </ beans:property > <!--自查线程周期进行工作,其每次休眠时间--> < beans:property name = "maintSleep" > < beans:value > 1000 </ beans:value > </ beans:property > <!--Socket的參数,假设是true在写数据时不缓冲。马上发送出去--> < beans:property name = "nagle" > < beans:value > false </ beans:value > </ beans:property > <!--Socket堵塞读取数据的超时时间--> < beans:property name = "socketTO" > < beans:value > 1000 </ beans:value > </ beans:property >
<!-- 当 memcached 的连接路径出现故障的时候,代码连接的时候时间超时设置 -->
< beans:property name = "socketConnectTO" >
< beans:value > 500 </ beans:value >
</ beans:property >
</ beans:bean > </ beans:beans > |
3 在 web.xml 中配置:
4 编写 MemcachedUtils , 代码例如以下:
package com.kuman.cartoon.utils;
import java.util.Date;
import org.apache.log4j.Logger;
import com.whalin.MemCached.MemCachedClient;
/** * @ClassName: MemcachedUtils * @Description: Memcached 工具类 * @author * @date 2015-8-6 * */ public class MemcachedUtils { private static final Logger logger = Logger.getLogger(MemcachedUtils.class); private static MemCachedClient cachedClient; static { if (cachedClient == null) // 括号里的名称要和配置文件 memcached-context.xml 中的名称一致 cachedClient = new MemCachedClient("memcache"); }
private MemcachedUtils() {}
/** * 向缓存加入新的键值对。假设键已经存在,则之前的值将被替换。 * * @param key * 键 * @param value * 值 * @return */ public static boolean set(String key, Object value) { return setExp(key, value, null); }
/** * 向缓存加入新的键值对。假设键已经存在。则之前的值将被替换。 * * @param key * 键 * @param value * 值 * @param expire * 过期时间 New Date(1000*10) :十秒后过期 * @return */ public static boolean set(String key, Object value, Date expire) { return setExp(key, value, expire); }
/** * 向缓存加入新的键值对。假设键已经存在。则之前的值将被替换。 * * @param key * 键 * @param value * 值 * @param expire * 过期时间 New Date(1000*10) :十秒后过期 * @return */ private static boolean setExp(String key, Object value, Date expire) { boolean flag = false; try { flag = cachedClient.set(key, value, expire); } catch (Exception e) { // 记录 Memcached 日志 logger.error("Memcached set 方法报错, key 值: " + key + "\r\n"); } return flag; }
/** * 仅当缓存中不存在键时。 add 命令才会向缓存中加入一个键值对。 * * @param key * 键 * @param value * 值 * @return */ public static boolean add(String key, Object value) { return addExp(key, value, null); }
/** * 仅当缓存中不存在键时。 add 命令才会向缓存中加入一个键值对。
* * @param key * 键 * @param value * 值 * @param expire * 过期时间 New Date(1000*10) :十秒后过期 * @return */ public static boolean add(String key, Object value, Date expire) { return addExp(key, value, expire); }
/** * 仅当缓存中不存在键时, add 命令才会向缓存中加入一个键值对。 * * @param key * 键 * @param value * 值 * @param expire * 过期时间 New Date(1000*10) :十秒后过期 * @return */ private static boolean addExp(String key, Object value, Date expire) { boolean flag = false; try { flag = cachedClient.add(key, value, expire); } catch (Exception e) { // 记录 Memcached 日志 logger.error("Memcached add 方法报错, key 值: " + key + "\r\n"); } return flag; }
/** * 仅当键已经存在时。 replace 命令才会替换缓存中的键。 * * @param key * 键 * @param value * 值 * @return */ public static boolean replace(String key, Object value) { return replaceExp(key, value, null); }
/** * 仅当键已经存在时, replace 命令才会替换缓存中的键。 * * @param key * 键 * @param value * 值 * @param expire * 过期时间 New Date(1000*10) :十秒后过期 * @return */ public static boolean replace(String key, Object value, Date expire) { return replaceExp(key, value, expire); }
/** * 仅当键已经存在时, replace 命令才会替换缓存中的键。
* * @param key * 键 * @param value * 值 * @param expire * 过期时间 New Date(1000*10) :十秒后过期 * @return */ private static boolean replaceExp(String key, Object value, Date expire) { boolean flag = false; try { flag = cachedClient.replace(key, value, expire); } catch (Exception e) { logger.error("Memcached replace 方法报错, key 值: " + key + "\r\n"); } return flag; }
/** * get 命令用于检索与之前加入的键值对相关的值。
* * @param key * 键 * @return */ public static Object get(String key) { Object obj = null; try { obj = cachedClient.get(key); } catch (Exception e) { logger.error("Memcached get 方法报错, key 值: " + key + "\r\n"); } return obj; }
/** * 删除 memcached 中的不论什么现有值。
* * @param key * 键 * @return */ public static boolean delete(String key) { return deleteExp(key, null); }
/** * 删除 memcached 中的不论什么现有值。
* * @param key * 键 * @param expire * 过期时间 New Date(1000*10) :十秒后过期 * @return */ public static boolean delete(String key, Date expire) { return deleteExp(key, expire); }
/** * 删除 memcached 中的不论什么现有值。
* * @param key * 键 * @param expire * 过期时间 New Date(1000*10) :十秒后过期 * @return */ private static boolean deleteExp(String key, Date expire) { boolean flag = false; try { flag = cachedClient.delete(key, expire); } catch (Exception e) { logger.error("Memcached delete 方法报错, key 值: " + key + "\r\n"); } return flag; }
/** * 清理缓存中的全部键 / 值对 * * @return */ public static boolean flashAll() { boolean flag = false; try { flag = cachedClient.flushAll(); } catch (Exception e) { logger.error("Memcached flashAll 方法报错 \r\n"); } return flag; }
/*@Test public void testMemcachedSpring() { MemcachedUtils.set("aa", "bb", new Date(1000 * 60)); Object obj = MemcachedUtils.get("aa"); System.out.println("***************************"); System.out.println(obj.toString()); }*/
} |
5 SpringMVC 中调用的方式:
@RequestMapping(value = "/toIndex") public String toIndex(Model model) { // 方法一,这样的不建议使用 //MemCachedClient memCachedClient = new MemCachedClient("memcache"); //memCachedClient.set("name", "simple"); //System.out.println(memCachedClient.get("name"));
// 方法二 , 建议这样的 MemcachedUtils.set("name", "simple"); String name = (String)MemcachedUtils.get("name"); System.out.println(name);
return "/admin/index"; } |
原文:http://www.cnblogs.com/ljbguanli/p/7056356.html
内容总结
以上是互联网集市为您收集整理的Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用全部内容,希望文章能够帮你解决Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。