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. hiredis的各种windows版本

    hiredis的各种windows版本(金庆的专栏 2016.12)hiredis 是内存数据库 redis 的客户端C库, 不支持Windows.hiredis的Windows移植版本有许多:des ...

  2. 《Non-Negative Matrix Factorization for Polyphonic Music Transcription》译文

    NMF(非负矩阵分解),由于其分解出的矩阵是非负的,在一些实际问题中具有非常好的解释,因此用途很广.在此,我给大家介绍一下NMF在多声部音乐中的应用.要翻译的论文是利用NMF转录多声部音乐的开山之作, ...

  3. Programming In Scala笔记-第十五章、Case Classes和模式匹配

    本章主要分析case classes和模式匹配(pattern matching). 一.简单例子 接下来首先以一个包含case classes和模式匹配的例子来展开本章内容. 下面的例子中将模拟实现 ...

  4. Git 处理tag和branch的命令

    最近想给GitHub 上的项目设置tag,可是使用GitHub Desktop,找了一圈都没找到快速设置Tag 的地方,最后只能通过终端命令来添加了. 想要查看Git 的命令,可以使用 git --h ...

  5. Xcode 中的断言

    转自:http://weibo.com/p/100808885591f113cdedc3301794e5e7d7e9f0/home?from=page_100808&mod=TAB#_rnd1 ...

  6. Hadoop的RPC通信原理

    RPC调用: RPC(remote procedure call)远程过程调用: 不同java进程间的对象方法的调用. 一方称作服务端(server),一方称为客户端(client): server端 ...

  7. Redis集群教程(Redis cluster tutorial)

    本博文翻译自Redis官网:http://redis.io/topics/cluster-tutorial        本文档以温和的方式介绍Redis集群,不使用复杂的方式来理解分布式系统的概念. ...

  8. [nginx]统计文件下载是否完整思路(flask)

    有一个需求是统计文件是否被用户完整下载,因为是web应用,用js没有找到实现方案,于是搜索下nginx的实现方案,把简单的探索过程记录下. 实验一 最原始的思路,查看日志,下载了一个文件之后我们看日志 ...

  9. ArrayList、HashMap、HashSet源码总结

    ArrayList: 1. ArrayList是List接口的大小可变数组的实现,此实现是不同步的. 2. ArrayList内部使用类型为Object[]的数组存储元素. 3. ArrayList默 ...

  10. octave installation on RHEL6.4

    octave installation on RHEL6.4 rhel6.4上安装octave GNU Octave 是一种高级语言,主要设计用来进行数值计算,它是 MathWorks 出品的 Mat ...