Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用

??

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

}

??

??

时间: 2024-08-24 09:25:36

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

在SSH项目中实现分页效果

在实现分页的时候,我使用的是数据库下面的User表,实现的效果是通过分页查询 能够将表中的数据分页显示,点击相关的按钮实现:首页.上一页.下一页.末页的显示 1新建一个dynamic web project项目 ,导入SSH项目所需要的jar antlr-2.7.7.jar c3p0-0.9.5.2.jar classmate-1.3.0.jar com.springsource.org.aopalliance-1.0.0.jar com.springsource.org.apache.comm

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

参考文章  :java使用websocket,并且获取HttpSession,源码分析    http://www.cnblogs.com/zhuxiaojie/p/6238826.html 1.在项目中引入依赖 websocket遵循了javaee规范,所以需要引入javaee的包 1 <dependency> 2 <groupId>javax.websocket</groupId> 3 <artifactId>javax.websocket-api<

SSH 项目中 用Hibernate底层 简单的封装DAO层

废话不多少了,主要是使用hibernate的查询方法,自己封装了DAO层,供service来方便使用. 首先:必须要继承的 public class CommonDao extends HibernateDaoSupport 紧接着是要注入必须的数据源: @Resource private SessionFactory sessionFactory; @PostConstruct public void initSessionFactory() { super.setSessionFactory

企业应用开发ERP项目中应用到的技术和工具

一.基础技术选型 C# .NET 3.5/4.0  这两个版本的.NET已经相当方便(Linq, Lambda,Parallel),语法简洁,配合WCF和WF两项技术,可以满足快速开发,维护方便的目标. Win Form  因ERP项目涉及大量的表单(Entry),查询(Enquiry),报表(Report),WinForm仍然是首选技术.自定义控件,数据绑定,自定义窗体,这三项技术组合起来可产生无穷的威力. SQL Server 2005  取兼容性最好的一个版本.2008/2008 R2/2

同一个项目中存在完全相同的包名和类名如何解决调用问题

项目中遇到有一个类,在两个jar包中都存在,而且类所在的包名和类名完全一致,解决办法有两种: 1.常用办法 清除项目中过时的那个jar包,推荐方式. 2.如果两个都不能清除,则在使用过程中动态指定加载的jar包即可.以rt.jar中javax.xml.ws.Service为例,代码如下 File file = new File("f:\\rt.jar"); URL url = file.toURI().toURL(); ClassLoader classLoader = new URL

Maven项目中mvn clean找不到测试类问题

在Maven项目中进行单元测试,但mvn clean后重新mvn install项目,再次进行单元测试,会有以下的错误, <span style="font-family:KaiTi_GB2312;font-size:18px;">Class not found com.core.order.service.impl.OrderServiceImplTest java.lang.ClassNotFoundException: com.core.order.service.i

SpringBoot整合Redis及Redis工具类

前言 想做一个秒杀项目,问了几个大佬要了项目视频,结果,自己本地实践的时候,发现不太一样,所以写下这篇,为以后做准备. 环境配置 IDE:IDEA 环境:Windows 数据库:Redis Maven配置 习惯用SpringBoot的小伙伴都知道,需要配置Maven,添加几个dependency. <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-

SpringBoot整合Redis并完成工具类

SpringBoot整合Redis的资料很多,但是我只需要整合完成后,可以操作Redis就可以了,所以不需要配合缓存相关的注解使用(如@Cacheable),而且我的系统框架用的日志是log4j,不是SpringBoot默认的Logback.通过查询资料我完成了Redis整合,并写了Redis操作工具类.特意在此记录一下,分享给大家,也方便以后查阅. 1.SpringBoot版本如下 <parent> <groupId>org.springframework.boot</gr

springboot2.2.2整合redis与redis 工具类大全

1.springboot2.2.2整合redis教程很多,为此编写了比较完整的redis工具类,符合企业级开发使用的工具类 2.springboot与redis maven相关的依赖 <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <