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 </beans:value>

</beans:property>

<!--每个服务器建立最小的连接数-->

<beans:property </beans:value>

</beans:property>

<!--每个服务器建立最大的连接数-->

<beans:property </beans:value>

</beans:property>

<!--自查线程周期进行工作,其每次休眠时间-->

<beans:property </beans:value>

</beans:property>

<!--Socket的参数,如果是true在写数据时不缓冲,立即发送出去-->

<beans:property </beans:value>

</beans:property>

<!-- </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";

}




Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用的更多相关文章

  1. 2018.12.1 web项目中解决乱码问题的一个工具类

    <!-- 配置一个过滤器 编码格式的过滤器 --> <filter> <filter-name>encodeFilter</filter-name> & ...

  2. java模板模式项目中使用--封装一个http请求工具类

    需要调用http接口的代码继承FundHttpTemplate类,重写getParamData方法,在getParamDate里写调用逻辑. 模板: package com.crb.ocms.fund ...

  3. 初识quartz 并分析 项目中spring整合quartz的配置【原创+转载】

    初识quartz 并分析 项目中spring整合quartz的配置[原创+转载]2018年01月29日 12:08:07 守望dfdfdf 阅读数:114 标签: quartz 更多个人分类: 工具 ...

  4. Maven项目中Spring整合Mybatis

    Maven项目中Spring整合Mybatis 添加jar包依赖 spring需要的jar包依赖 <dependency> <groupId>org.springframewo ...

  5. .NET3.5中JSON用法以及封装JsonUtils工具类

    .NET3.5中JSON用法以及封装JsonUtils工具类  我们讲到JSON的简单使用,现在我们来研究如何进行封装微软提供的JSON基类,达到更加方便.简单.强大且重用性高的效果. 首先创建一个类 ...

  6. hessian在ssh项目中的配置

    一. 在服务端发布一个web项目 1.创建一个动态的web项目,并导入hessian的jar包 2. 在服务端的crm项目中创建接口 package cn.rodge.crm.service;impo ...

  7. 在SSH项目中实现分页效果

    在实现分页的时候,我使用的是数据库下面的User表,实现的效果是通过分页查询 能够将表中的数据分页显示,点击相关的按钮实现:首页.上一页.下一页.末页的显示 1新建一个dynamic web proj ...

  8. SSH 项目中 使用websocket 实现网页聊天功能

    参考文章  :java使用websocket,并且获取HttpSession,源码分析    http://www.cnblogs.com/zhuxiaojie/p/6238826.html 1.在项 ...

  9. 快速将wax配置到项目中进行lua开发

    通过Finder浏览到你保存该项目的文件夹.创建三个新的文件夹:wax.scripts和Classes. 第一:首先,下载源代码的压缩包.Wax放在GitHub上(https://github.com ...

随机推荐

  1. Android艺术开发探索第三章————View的事件体系(下)

    Android艺术开发探索第三章----View的事件体系(下) 在这里就能学习到很多,主要还是对View的事件分发做一个体系的了解 一.View的事件分发 上篇大致的说了一下View的基础知识和滑动 ...

  2. JVM垃圾回收总结

    来自Oracle官方文档,对JVM GC知识整理的清晰易懂,查资料还是看官方的好! 1 GC步骤简述 步骤1:标记 (Marking) 根据对象引用关系,将未被任何对象引用的对象实例标记出来,如下图中 ...

  3. wget 常用参数释义

    wget 大法好啊,废话不多说,下面开始wget之旅吧. 下载限速 wget命令有一个内建的选项可以先顶下载任务占有的最大的带宽,从而保证其他应用程序的流畅运行. 具体使用--limit-rate 数 ...

  4. UNIX网络编程——尝试探索基于Linux C的网卡抓包过程

     抓包首先便要知道经过网卡的数据其实都是通过底层的链路层(MAC),在Linux系统中我们获取网卡的数据流量其实是直接从链路层收发数据帧.至于如何进行TCP/UDP连接本文就不再赘述(之前的一段关于w ...

  5. 【NPR】铅笔画

    写在前面 今天打算写一篇跟Unity基本无关的文章.起因是我上个星期不知怎么的搜到了一个网站 ,里面实现的效果感觉挺好的,后来发现是2012年的NPAR会议的最佳论文.看了下文章,觉得不是很难,就想着 ...

  6. 1.关于QT中json数据处理和密码md5加密

     新建一个Qt空项目 17Json.pro HEADERS += \ MyWidget.h SOURCES += \ MyWidget.cpp QT += widgets gui MyWidget ...

  7. FFmpeg源代码简单分析:libavdevice的avdevice_register_all()

    ===================================================== FFmpeg的库函数源代码分析文章列表: [架构图] FFmpeg源代码结构图 - 解码 F ...

  8. UNIX网络编程——解决TCP网络传输“粘包”问题

    当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API).TCP/IP传输层有两个并列的协议:TCP和UDP.其中TCP(transport contro ...

  9. A*寻路算法入门(五)

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 免责申明:本博客提供的所有翻译文章原稿均来自互联网,仅供学习交流 ...

  10. Docker教程:docker的概念及安装

    http://blog.csdn.net/pipisorry/article/details/50754385 Why docker 对于运维来说,Docker提供了一种可移植的标准化部署过程,使得规 ...