`

Memcached安装、使用,与AOP集成

阅读更多

一:安装
  1,如果是LINUX系统,可以到官方网址http://memcached.org/进行下载,安装教程网上一大堆,这里不再叙述。
  2,如果是WINDOWS系统

     - 到http://code.jellycan.com/memcached/下载稳定版。

     - 下载后解压到某个盘下面,比如在c:\memcached,在终端(也即cmd命令界面)下输入 ‘c:\memcached\memcached.exe -d install’ 安装。

     - 再输入: ‘c:\memcached\memcached.exe -d start’ 启动。

     - 修改memcache的内存大小,可以在注册表里找到HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/memcached Server,修改ImagePath的值为
“C:/memcached/memcached.exe” -d runservice -m 512
  NOTE: Windows版本一般用作开发调试只用,不建议在产品环境中使用。

二:JAVA连接使用Memcached
  1, 下载memcached客户端开发包,地址https://github.com/gwhalin/Memcached-Java-Client
  2,下面是一个连接并使用的简单例子

package com.ea.online.memcache;

import java.util.Date;

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

public class MyClass {

    // create a static client as most installs only need
    // a single instance
    protected static MemCachedClient mcc = new MemCachedClient();

    protected static SockIOPool pool = null;
    // set up connection pool once at class load
    static {

        // Server list
        String[] servers = { "localhost:11211" };

        // Specify memcached capacity
        Integer[] weights = { 3, 3, 2 };

        /*
         * String[] serverlist = { "cache0.server.com:12345",
         * "cache1.server.com:12345" }; Integer[] weights = { new
         * Integer(5), new Integer(2) }; int initialConnections = 10; int
         * minSpareConnections = 5; int maxSpareConnections = 50; long
         * maxIdleTime = 1000 * 60 * 30; // 30 minutes long maxBusyTime = 1000 *
         * 60 * 5; // 5 minutes long maintThreadSleep = 1000 * 5; // 5 seconds
         * int socketTimeOut = 1000 * 3; // 3 seconds to block on reads int
         * socketConnectTO = 1000 * 3; // 3 seconds to block on initial
         * connections. If 0, then will use blocking connect (default) boolean
         * failover = false; // turn off auto-failover in event of server down
         * boolean nagleAlg = false; // turn off Nagle's algorithm on all
         * sockets in pool boolean aliveCheck = false; // disable health check
         * of socket on checkout
         *
         * SockIOPool pool = SockIOPool.getInstance();
         * pool.setServers(serverlist);
         * pool.setWeights(weights);
         * pool.setInitConn(initialConnections);
         * pool.setMinConn(minSpareConnections);
         * pool.setMaxConn(maxSpareConnections); pool.setMaxIdle(maxIdleTime);
         * pool.setMaxBusyTime(maxBusyTime);
         * pool.setMaintSleep(maintThreadSleep);
         * pool.setSocketTO(socketTimeOut); pool.setNagle(nagleAlg);
         * pool.setHashingAlg(SockIOPool.NEW_COMPAT_HASH);
         * pool.setAliveCheck(true); pool.initialize();
         */

        // grab an instance of our connection pool
        pool = SockIOPool.getInstance();

        // set the servers and the weights
        pool.setServers(servers);
        pool.setWeights(weights);

        // Specify main thread maintain frequency
        pool.setMaintSleep(30);

        // set some TCP settings
        // disable nagle
        pool.setNagle(false);
        // set the read timeout to 3 secs
        pool.setSocketTO(3000);
        // and don't set a connect timeout
        pool.setSocketConnectTO(0);

        // initialize the connection pool
        pool.initialize();


    }

    // from here on down, you can call any of the client calls
    public static void main(String[] args) {
        // Test expired
        mcc.set("foo", "This is a test String", new Date(
                new Date().getTime() + 3000));
        String bar = mcc.get("foo").toString();
        System.out.println("test-->" + bar);
        while (true) {
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            System.out.println(mcc.get("foo"));
        }
        // pool.shutDown();
    }
}

 
详细使用可以借鉴这篇文章:http://sillycat.iteye.com/blog/563615

三:结合AOP编程
  1,对于memcached与spring aop的集成网上又是一堆,这里不提了。
  2,对于memcached与guice aop的集成可参考http://code.google.com/p/google-guice/wiki/AOP
  3,对于需要通过手动实现动态代理的方式来实现AOP的可以参考 http://www.blogjava.net/DoubleJ/archive/2008/03/04/183796.html

四:一个简单的环绕通知切面,不可运行,仅作参考

public Around implements MethodInterceptor {
 ....
    public Object invoke(MethodInvocation mi, Object[] args) {
        Object obj = null;
        //从Memcached中获取
        obj = mcc.get(this.class.getName() + mi.getMethodName() + args.hashcode());
        if(obj != null) {
            return obj;
        }
       
        obj = method.invoke(args);
       
        //存入Memcached
        mcc.set(this.class.getName() + mi.getMethodName() + args.hashcode, obj, expiredDate);
        return obj;
    }
 ....
}
 

 

分享到:
评论

相关推荐

    Memcached与Spring、Mybatis集成.doc

    配置与使用** 首先,需要在MyBatis的配置文件中启用mybatis-memcached插件,并指定Memcached服务器的地址等参数: ```xml ``` 这里配置了一个名为`MemcachedInterceptor`的插件,并设置了一些...

    SSM整合memcached缓存

    1. 安装和配置Memcached:首先,你需要在服务器上安装和运行Memcached服务。这通常涉及到下载Memcached,配置启动参数,并通过命令行启动服务。 2. 添加依赖:在SSM项目中,你需要在pom.xml文件中添加Memcached的...

    Memcached spring 的集成

    - 引入SSM配置:`<import resource="classpath:simplesm-context.xml">`引入Simple Spring Memcached(SSM)的核心配置,这是一个基于AOP的Memcached客户端,用于处理缓存操作。 5. **缓存注解**: - 使用`@...

    SSM整合memcached

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

    Spring4+SpringMVC+mysql+memcached【同时支持mybatis+hibernate两种底层操作框架】

    在本项目中,MySQL用于持久化应用程序的数据,与Spring框架集成,通过JDBC或ORM框架进行数据操作。 4. **Memcached**:Memcached是一个高性能、分布式内存对象缓存系统,用于减少数据库负载,提高Web应用的速度。在...

    spring memcached 所需jar

    当我们将Memcached与Spring集成时,我们可以利用Spring的IoC(Inversion of Control)和AOP(Aspect-Oriented Programming)特性来更方便地管理和使用缓存服务。 在"spring memcached 所需jar"这个场景中,我们关注...

    SSM与memcached整合项目

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

    Spring与memcached整合

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

    Memcached-Java-Client-release_2.6.1.zip

    而Java作为企业级应用的主流开发语言,其与Memcached的集成对于Java开发者来说尤为重要。本文将围绕标题“Memcached-Java-Client-release_2.6.1.zip”展开,详细讲解如何在Java项目中整合并使用Memcached客户端库。 ...

    hibernate4+spring4+memcached 工程

    【标题】"hibernate4+spring4+memcached 工程"是一个集成项目,它结合了三个关键的开源技术,旨在提供一个高效且可扩展的后端数据管理解决方案。Hibernate 4是Java领域中最流行的ORM(对象关系映射)框架,它允许...

    spring+memcached.jar

    标题中的"spring+memcached.jar"表明这是一个...这些知识点对于理解和使用Spring框架与Memcached结合的Java应用至关重要,它们涉及到如何有效地管理和优化缓存操作,以及如何在Spring环境中集成和使用Memcached服务。

    SSM与memcached整合项目Spring Cache

    在Java应用中,通常使用spymemcached或xmemcached库来与memcached服务器通信。 整合Spring Cache与memcached的关键步骤如下: 1. **添加依赖**:首先,我们需要在项目中引入memcached的客户端库和Spring Cache的...

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

    总结起来,Simple-Spring-Memcached通过命名空间、自定义key生成策略以及Spring的AOP集成,提供了一套统一、灵活的缓存解决方案。正确地规划和配置这些元素,能够有效地避免缓存冲突,提升系统性能,同时保证数据的...

    maven-springmvc-mybatis-memcached

    【描述】"maven-springmvc-mybatis -memcached"描述了一个使用Maven构建工具、SpringMVC作为前端控制器、MyBatis作为持久层框架,并结合Memcached作为缓存服务的Web应用开发环境。这个项目旨在展示如何将这些组件...

    memcached+spring

    将 Memcached 与 Spring 整合,可以充分利用 Memcached 的缓存能力,为基于Spring的应用提供高效的缓存服务。 在Spring应用中整合Memcached,我们需要完成以下几个关键步骤: 1. **安装和配置Memcached服务器** ...

    simple-spring-memcached-3.1.0-dist

    "simple-spring-memcached-3.1.0-dist" 是一个针对Spring框架的缓存扩展,它使得在Spring应用中集成和使用Memcached成为可能。Memcached是一种高性能的分布式内存对象缓存系统,用于减少数据库负载,提高应用程序的...

    memcache也spring,hibernate的配置

    xmemcache-spring是其与Spring框架的整合,提供Spring的缓存抽象,使得在Spring应用中配置和使用Memcached更方便。 7. **配置步骤**: - 首先,在pom.xml中添加所需的依赖,包括memcached、hibernate-memcached和...

    springMvc Mybatis Memcached

    Memcached支持多语言接口,包括Java,因此可以轻松集成到Spring MVC和MyBatis项目中。通过缓存经常访问的数据,Memcached可以显著降低数据库负载,提高响应速度。 压缩包中的"JAVA开发规范文档.doc"可能包含了关于...

    spring memcache 集成使用

    ### Spring与Memcache集成知识点详解 #### 一、Spring与Memcache简介 - **Spring**:Spring框架是Java平台上的一个开源应用框架,提供了一种简单的方式来管理对象生命周期以及依赖关系,同时也支持AOP(面向切面...

Global site tag (gtag.js) - Google Analytics