`
01jiangwei01
  • 浏览: 543062 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

spring与memcached整合

    博客分类:
  • java
 
阅读更多

今天闲来无事,因为工作中要用到缓存,这里决定使用Memcache,所以利用周末,在家里做了个demo,发表出来希望对大家有用。

1, 开始肯定是下载需要的文件了,这里就下载附件里的文件就好,我也是在网上down的,放这好找。然后我们安装一下Memcache服务器,找到解压的memcached-1.2.1-win32,启动cmd ,进入解压目录,输入命令 D:\memcached-1.2.6-win32\memcached.exe -d install.然后再键入命令'D:\memcached\memcached.exe -d start'启动,这样memcache就会作为windows系统服务在每次开机时启动memcache服务。

2,下面我们开始在使用java进行配置开发。添加Spring功能。在web.xml中添加配置。

 

 
<context-param>    
			<param-name>contextConfigLocation</param-name>    
			<param-value>classpath:/spring/applicationContext-common.xml,
			classpath:/spring/spring-memcache.xml
			</param-value>
</context-param>

 

3,在src下新建spring目录,并新建applicationContext-common.xml和spring-memcache.xml。内容分别如下。

applicationContext-common.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<bean
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
	<property name="locations">
	<list>
		<value>classpath:memcache.properties</value>
		<value>classpath:jdbc.properties</value>
	</list>
	</property>
</bean>
<bean id="springContextHolder" class="com.hxrainbow.crm.util.SpringContextHolder"/>
</beans>

spring-memcache.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans
	xmlns="http://www.springframework.org/schema/beans"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:p="http://www.springframework.org/schema/p"
	xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd">

<bean id="memcachedPool" class="com.danga.MemCached.SockIOPool" factory-method="getInstance" 
	init-method="initialize"	destroy-method="shutDown">
		<property name="servers">
			<list>
				<value>${memcache.server}</value>
			</list>
		</property>
		<property name="initConn">
			<value>${memcache.initConn}</value>
		</property>
		<property name="minConn">
			<value>${memcache.minConn}</value>
		</property>
		<property name="maxConn">
			<value>${memcache.maxConn}</value>
		</property>
		<property name="maintSleep">
			<value>${memcache.maintSleep}</value>
		</property>
		<property name="nagle">
			<value>${memcache.nagle}</value>
		</property>
		<property name="socketTO">
			<value>${memcache.socketTO}</value>
		</property>
</bean>
<bean id="memcachedClient" class="com.danga.MemCached.MemCachedClient">
</bean>
</beans>

在配置文件中我们会看到memcache.properties,jdbc.properties和springContextHolder。

他们的内容分别是:

memcache.properties

memcache.server=127.0.0.1:11211
memcache.initConn=20
memcache.minConn=10
memcache.maxConn=50
memcache.maintSleep=3000
memcache.nagle=false
memcache.socketTO=3000

 

jdbc.properties						

 

import java.util.Map;

import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * 
 * 以静态变量保存Spring ApplicationContext, 可在任何代码任何地方任何时候中取出ApplicaitonContext.
 **/

public class SpringContextHolder implements ApplicationContextAware {

	private static ApplicationContext applicationContext;

	/**
	 * 
	 * 实现ApplicationContextAware接口的context注入函数, 将其存入静态变量.
	 */

	public void setApplicationContext(ApplicationContext applicationContext) {
		SpringContextHolder.applicationContext = applicationContext;
	}
	/**
	 * 
	 * 取得存储在静态变量中的ApplicationContext.
	 */
	public static ApplicationContext getApplicationContext() {
		checkApplicationContext();
		return applicationContext;

	}

	/**
	 * 
	 * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
	 */

	@SuppressWarnings("unchecked")
	public static <T> T getBean(String name) {

		checkApplicationContext();

		return (T) applicationContext.getBean(name);

	}

	/**
	 * 
	 * 从静态变量ApplicationContext中取得Bean, 自动转型为所赋值对象的类型.
	 * 
	 * 如果有多个Bean符合Class, 取出第一个.
	 */

	@SuppressWarnings({ "unchecked", "rawtypes" })
	public static <T> T getBean(Class<T> clazz) {

		checkApplicationContext();

		Map beanMaps = applicationContext.getBeansOfType(clazz);

		if (beanMaps != null && !beanMaps.isEmpty()) {

			return (T) beanMaps.values().iterator().next();

		} else {

			return null;

		}

	}

	private static void checkApplicationContext() {

		if (applicationContext == null) {

			throw new IllegalStateException(
					"applicaitonContext未注入,请在applicationContext.xml中定义SpringContextHolder");

		}

	}

 配置文件我们写完了,下面我们开始测试使用。

 

做Bean类

 import java.io.Serializable;

public class Bean implements Serializable{
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	private String name;
	
	private int age;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	 
	public String toString() {
		 String bean = "{name:"+this.getName()+",age:"+this.getAge()+"}";
		return bean;
	}
	 

}

 

做测试使用类:

import java.util.ArrayList;
import java.util.List;

import org.springframework.context.ApplicationContext;
import org.springframework.context.support.FileSystemXmlApplicationContext;

import com.danga.MemCached.MemCachedClient;
import com.danga.MemCached.SockIOPool;

public class MemcacheUtilTest {
     
   public static void main(String[] args) {
	   
	   ApplicationContext ctx = new FileSystemXmlApplicationContext(new String[]{"src/spring/spring-memcache.xml","src/spring/applicationContext-common.xml"});
	   
	   SockIOPool s =SpringContextHolder.getBean("memcachedPool"); 
	   System.out.println("s="+s.getInitConn());
	   
	   MemCachedClient mc = (MemCachedClient) ctx.getBean("memcachedClient");
	   
	   //开始设值
	   mc.set("name", " string  ");
	   mc.set("int", 5);
	   mc.set("double", 5.5);
	   
	   Bean bean = new Bean();
	   bean.setAge(21);
	   bean.setName("名字");
	   
	   mc.set("bean", bean);
	   
	   
	   List<Bean> data = new ArrayList<Bean>();
	   for(int i=0;i<3;i++)
	   {
		   Bean xbean = new Bean();
		   xbean.setAge(i);
		   xbean.setName("test_"+i);
		   data.add(xbean) ;
	   }
	   mc.set("data", data);
	   
	  try{
	   Thread.sleep(50);
	   
	   //开始取值
	   String name =(String) mc.get("name");
	   int i = (Integer) mc.get("int");
	   double d = (Double) mc.get("double") ;
	   Bean b = (Bean) mc.get("bean") ;
	   data =  (List<Bean>) mc.get("data") ;
	   
	   System.out.println("字符串:"+name);
	   System.out.println("数字型:"+i);
	   System.out.println("双精度:"+d);
	   System.out.println("bean  toString :"+b.toString());
	   
	   System.out.println("data  toString :"+data.toString());
	   
	   //开始删除值
	   System.out.println("开始删除 :》》》》》》》》》");
	   mc.delete("name");
	   mc.delete("int");
	   mc.delete("double");
	   mc.delete("bean");
	    
	   String name_d =(String) mc.get("name");
	   int i_d = (Integer) mc.get("int");
	   double d_d = (Double) mc.get("double") ;
	   Bean b_d = (Bean) mc.get("bean") ;
	   
	   System.out.println("字符串:"+name_d);
	   System.out.println("数字型:"+i_d);
	   System.out.println("双精度:"+d_d);
	   System.out.println("bean  toString :"+b_d.toString());
	  }catch(Exception e){
	   e.printStackTrace();
	  }
	 }

}

 运行一下,看看结果吧。具体可参考java_memcached-release_1.6\doc\HOWTO.txt.注意Bean要实现序列化。

 

分享到:
评论

相关推荐

    Spring与memcached整合

    标题“Spring与memcached整合”涉及的是在Java开发环境中如何将Spring框架与memcached缓存系统相结合使用,以便提升应用程序的性能和响应速度。这里我们将深入探讨这一整合过程中的关键概念和技术。 首先,...

    Spring整合memcached完整项目代码

    本文将深入探讨如何将Spring与Memcached整合,以及如何使用Spring Cache注解实现缓存功能。 首先,我们需要理解Spring Cache的基本概念。Spring Cache是一个抽象层,它允许我们在不依赖特定缓存实现的情况下使用...

    spring整合memcached

    这篇文章将详细介绍如何将Spring与Memcached整合,帮助新手入门这一技术栈。 首先,我们需要理解Spring整合Memcached的目的。在高并发的Web应用中,缓存可以显著提升性能,减少数据库的负载。Memcached因其简单高效...

    (SSM框架)memcached整合Spring基于Cache注解.

    虽然MyBatis本身不支持缓存,但可以通过Spring的缓存抽象层与Memcached进行整合。在MyBatis的Mapper接口方法上使用Spring的Cache注解,实现查询结果的缓存。 8. **性能优化**: 使用Memcached需要注意缓存穿透、...

    SSM与memcached整合项目Spring Cache

    不过,具体这些文件如何与SSM(Spring、SpringMVC、MyBatis)和memcached整合的细节,需要参考实际的项目代码。 通过这样的整合,我们可以充分利用Spring Cache的便捷性和memcached的高性能,为应用程序构建一个...

    SSM与memcached整合项目

    SSM与Memcached整合是一个常见的Java Web开发技术组合,用于提升应用的性能和可扩展性。SSM是指Spring、Spring MVC和MyBatis三个框架的集成,而Memcached则是一种高性能、分布式内存对象缓存系统。这个项目是将这三...

    springMVC+memcached整合

    此工程为 springMVC+memcached整合 项目。 resources\config\memcached.xml为 memcached配置文件。test\cn\sky\tian\test\spring为Demo的路径。 (里面有个src\cn\sky\tian\test\controller路径是MengoDB的demo,也...

    spring+memcached.jar

    标题中的"spring+memcached.jar"表明这是一个整合了Spring框架与Memcached缓存服务的Java应用程序。Memcached是一种广泛使用的分布式内存对象缓存系统,它能够通过减轻数据库负载来提高Web应用的性能。Spring框架是...

    java Memcached Spring整合代码实例

    java Memcached客户端代码,整合到Spring,提供Util工具类 代码片段: public class MemcachedUtils { private static boolean setExp(String key, Object value, Date expire) { boolean flag = false; try { ...

    SSM框架Spring memcached整合基于注解形式

    在这个项目中,我们将探讨如何将Spring与memcached缓存系统进行整合,以提高应用程序的性能和响应速度。Memcached是一款高性能、分布式内存对象缓存系统,用于临时存储中间结果或频繁访问的数据,从而减轻数据库的...

    spring-mybatis-memcached.zip_Memcached java_annotation_mybatis_m

    ssm3-mybatis2-memcached 使用了 simple-...ssm3-springcache-mybatis3-memcached 通过 Spring Cache(Spring 3.1+) 实现 simple-spring-memcached 和 MyBatis3 整合。 simple-spring-memcached 使用了 JSON 序列化。

    simple-spring-memcached统一缓存的使用实例[整理].pdf

    Simple-Spring-Memcached(SSM)是一个流行的缓存框架,它整合了Spring框架与Memcached,提供了一种统一的方式来处理缓存操作。本文将详细介绍如何在实际应用中使用SSM进行统一缓存管理,并分享在规划和配置过程中...

    hibernate4+spring4+memcached 工程

    从【压缩包子文件的文件名称列表】"hibernate-memcached-master"来看,这可能是项目的根目录,暗示着项目中可能包含了一套完整的配置和实现,用于将Hibernate与Memcached整合。具体可能包括以下部分: 1. **配置...

    使用spring aop对web 应用数据进行memcached缓存

    3. **整合Spring AOP与Memcached**: - 在Spring应用中,可以创建一个自定义的切面来处理数据缓存。例如,当一个服务方法被调用时,首先检查请求的数据是否已经在Memcached中,如果存在则直接返回,否则从数据库...

    SSM整合memcached缓存

    现在我们来看看如何将Memcached整合到SSM中: 1. 安装和配置Memcached:首先,你需要在服务器上安装和运行Memcached服务。这通常涉及到下载Memcached,配置启动参数,并通过命令行启动服务。 2. 添加依赖:在SSM...

    SSM整合memcached

    SSM整合Memcached是将Spring、Spring MVC和MyBatis这三大Java Web开发框架与Memcached内存缓存系统相结合的过程,以提升应用的性能和响应速度。Memcached是一款高性能、分布式内存对象缓存系统,广泛用于减轻数据库...

    maven-springmvc-mybatis-memcached

    MyBatis-Spring整合后,可以利用Spring的事务管理功能,简化数据库操作。 4. Memcached:Memcached是一个基于键值对的缓存系统,适合存储小块的、临时的数据。在Web应用中,它可以缓存数据库查询结果,减少数据库...

    spring boot 实践学习案例,与其它组件整合

    spring boot 实践学习案例,与其它组件结合如 mybatis、jpa、dubbo、redis、mongodb、memcached、kafka、rabbitmq、activemq、elasticsearch、security、shiro等 #### Spring Boot 版本 - 2.0.3.RELEASE #### 模块...

Global site tag (gtag.js) - Google Analytics