`
liyuan1943
  • 浏览: 18356 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

在java程序中使用memcached

阅读更多
在java程序中使用memcached(2009-12-10 16:18:16)转载标签:memcachedmemcachejava阿里软件缓存it 分类:web开发

在完成“memcached安装、运行”之后,来看看在java中怎么使用memcached来提高web用户的性能,我这里使用的是阿里软件的同学开发一个缓存包alisoft-xplatform-asf-cache-2.5.2.jar(在http://code.google.com/p/memcache-client-forjava/downloads/list 可以下载)。阿里软件同学开发的这个java版本的memcached客户包,相当不错,其支持本地缓存,大提高了缓存对象的获取的效率。

创建以下工具类:MemCachedUtil

package cn.duoduo.module.cache;

import org.apache.log4j.Logger;

import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;

import com.alisoft.xplatform.asf.cache.ICacheManager;
import com.alisoft.xplatform.asf.cache.IMemcachedCache;
import com.alisoft.xplatform.asf.cache.memcached.CacheUtil;
import com.alisoft.xplatform.asf.cache.memcached.MemcachedCacheManager;

public class MemCachedUtil {

  
    private static final Logger                   logger                = Logger.getLogger(MemCachedUtil.class);
    //默认缓存3分钟
    private static final int                      REF_SECONDS       = 3 * 60;
  
    private static ICacheManager<IMemcachedCache> manager;
  
    private static Map<String, IMemcachedCache>   cacheArray;
  
    private static final String                   defalutCacheName = "mclient1";
  
    static {
        cacheArray = new HashMap<String, IMemcachedCache>();
        manager = CacheUtil.getCacheManager(IMemcachedCache.class, MemcachedCacheManager.class
            .getName());
        // manager.setConfigFile("memcached.xml");
        manager.start();
        cacheArray.put(defalutCacheName, manager.getCache(defalutCacheName));
    }

    private static String getCacheName(String type, Object key) {
        StringBuffer cacheName = new StringBuffer(type);
        if (key != null) {
            cacheName.append("_").append(key);
        }
        return cacheName.toString();
    }
  
    public static void set(String type, Object key, Object value) {
        set(type, key, value, REF_SECONDS);
    }
  
    public static void putNoTimeInCache(String type, Object key, Object value) {
        if (value != null) {
            set(type, key, value, -1);
        }
    }

    public static void set(String type, Object key, Object value, int seconds) {
        if (value != null) {
            String cacheName = getCacheName(type, key);
            try {
                if (seconds < 1) {
                    cacheArray.get(defalutCacheName).put(cacheName, value);
                } else {
                    cacheArray.get(defalutCacheName).put(cacheName, value, seconds);
                }
            } catch (Exception e) {
                logger.log(Level.INFO, "cache " + defalutCacheName + " socket error。");
            }
        }
    }
  
    public static void delete(String type, Object key) {
        cacheArray.get(defalutCacheName).remove(getCacheName(type, key));
    }
  
    @SuppressWarnings("unchecked")
    public static <T> T get(Class<T> clazz, String type, Object key) {
        return (T) cacheArray.get(defalutCacheName).get(getCacheName(type, key));
    }
  
    @SuppressWarnings("unchecked")
    public static <T> List<T> getList(Class<T> clazz, String type, Object key) {
        return (List<T>) cacheArray.get(defalutCacheName).get(getCacheName(type, key));
    }
  
    @SuppressWarnings("unchecked")
    public static <T> T get(Class<T> clazz, String type, Object key, int localTTL) {
        try {
            return (T) cacheArray.get(defalutCacheName).get(getCacheName(type, key), localTTL);
        } catch (Exception e) {
            return null;
        }
    }
  
    @SuppressWarnings("unchecked")
    public static <T> List<T> getList(Class<T> clazz, String type, Object key, int localTTL) {
        try {
            return (List<T>) cacheArray.get(defalutCacheName)
                .get(getCacheName(type, key), localTTL);
        } catch (Exception e) {
            return null;
        }
    }
  
    @SuppressWarnings("unchecked")
    public static <V> Map<String, V> getMap(Class<V> clazz, String type, Object key, int localTTL) {
        try {
            return (Map<String, V>) cacheArray.get(defalutCacheName).get(getCacheName(type, key),
                localTTL);
        } catch (Exception e) {
            return null;
        }
    }
  
    @SuppressWarnings("unchecked")
    public static <V> Map<String, V> getMap(Class<V> clazz, String type, Object key) {
        try {
            return (Map<String, V>) cacheArray.get(defalutCacheName).get(getCacheName(type, key));
        } catch (Exception e) {
            return null;
        }
    }
  
    public static Set<String> getKeyList() {
        return cacheArray.get(defalutCacheName).keySet();
    }
  
    public static void clear() {
        cacheArray.get(defalutCacheName).clear();
    }

    public static void close() {
        manager.stop();
    }

    public static void main(String argv[]) {
        if (argv.length == 0) {
            System.out.println("Usage:MemCachedUtil get|del|set|list [type] [key] [value]");
            return;
        }
        String type = null;
        String key = null;
        String value = null;
        if ("get".equals(argv[0])) {
            if (argv.length < 3) {
                System.out.println("Usage:MemCachedUtil get type key");
                return;
            }
            type = argv[1];
            key = argv[2];
            System.out.println(MemCachedUtil.get(Object.class, type, key));
        } else if ("del".equals(argv[0])) {
            if (argv.length < 3) {
                System.out.println("Usage:MemCachedUtil del type key");
                return;
            }
            type = argv[1];
            key = argv[2];
            MemCachedUtil.delete(type, key);
        } else if ("set".equals(argv[0])) {
            if (argv.length < 4) {
                System.out.println("Usage:MemCachedUtil set type key value");
                return;
            }
            type = argv[1];
            key = argv[2];
            value = argv[3];
            MemCachedUtil.set(type, key, value);
        } else if ("list".equals(argv[0])) {
            System.out.println(MemCachedUtil.getKeyList());
        }
        MemCachedUtil.close();
    }
}

工具类写好了,不过它还需要一个配置文件memcached.xml:
<?xml version="1.0" encoding="UTF-8"?>
<memcached>
    <client name="mclient1" compressEnable="true" defaultEncoding="UTF-8" socketpool="pool1">
   <errorHandler>com.alisoft.xplatform.asf.cache.memcached.MemcachedErrorHandler</errorHandler>
    </client>
    <socketpool name="pool1" failover="true" initConn="10" minConn="50" maxConn="1024" maintSleep="0"
        nagle="false" socketTO="3000" aliveCheck="true">
        <servers>192.168.1.105:11211</servers>
    </socketpool>
</memcached>

好了,正确引入必要的依赖包后,就可以运行了。
分享到:
评论

相关推荐

    在java程序中使用memcached简单示例

    在java程序中使用memcached简单示例

    java使用memcached的实例

    本文将详细解析如何在Java项目中使用Memcached,包括其配置方法以及一个具体的示例代码,旨在帮助开发者深入理解并掌握这一技术。 ### 一、Memcached简介 Memcached是一种开源的高性能内存键值存储系统,主要用于...

    JAVA+MYSQL+Memcached

    在提供的文件"memcache学习总结(java版-winwods).docx"中,可能详细介绍了如何在Windows环境下使用Java来操作Memcached,包括安装步骤、配置以及基本的增删查改操作。 至于"Memcached_1.2.5.zip",这应该是...

    java使用Memcached简单教程

    由于本教程的项目基于Java开发,因此我们将详细介绍如何在Java程序中集成Memcached。 ##### 3.1 引入依赖 为了在Java项目中使用Memcached,我们需要引入一个客户端库。在这里,我们选择使用SpyMemcached作为客户端...

    memcached安装包以及java所需的memcached架包

    为了在Java应用中使用memcached,你需要一个Java客户端库。在提供的压缩包中,包含了`java_memcached-release_2.6.6.jar`,这是一个Java客户端库,允许Java应用程序与memcached服务器通信。 1. **添加依赖**:将`...

    java中连接memcached服务器

    接下来,我们将深入探讨如何在Java环境中配置和使用Memcached。 首先,要连接到Memcached服务器,你需要一个Java客户端库。常见的有spymemcached和XMemcached。这里我们以spymemcached为例,因为它是社区中广泛使用...

    Memcached java的使用实例

    接下来,让我们看看如何在Java代码中使用Memcached。首先,我们需要创建一个`MemcachedClient`实例,连接到运行的Memcached服务器: ```java import net.spy.memcached.AddrUtil; import ...

    memcached安装及java应用使用memcached

    “memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...

    Java环境下Memcached应用详解.docx

    总之,Java环境下Memcached的应用主要在于提供一个高效、分布式的缓存解决方案,它能有效提升应用程序的响应速度,减轻数据库压力,特别是在集群环境中,通过合理配置和使用,可以极大地优化系统的整体性能。

    java_memcached-release_2.5.1.jar Memcache java jar 包

    2. **缓存操作**:通过简单的API,开发者可以设置、获取、删除或检查缓存在Memcached中的键值对。这些操作通常都是原子性的,确保了数据的一致性。 3. **序列化与反序列化**:Java Memcached客户端库通常会处理对象...

    java连接memcached示例代码

    下面我们将详细探讨如何在Java中使用Memcached以及相关知识点。 首先,我们需要引入一个Java库来与Memcached通信,例如spymemcached或xmemcached。这两个库提供了Java客户端,方便我们进行API调用。这里以...

    普通java工程测试java使用memcached连接服务端

    首先,为了在Java工程中使用Memcached,我们需要引入一个Java客户端库。常见的有spymemcached和xmemcached,这里以spymemcached为例。在Maven项目中,可以在pom.xml文件中添加如下依赖: ```xml &lt;groupId&gt;...

    memcached for java client 例子

    综上所述,这个压缩包中的"JAVA工程"可能是演示了如何在Java应用程序中使用memcached客户端进行数据缓存操作的示例代码,涵盖了从连接、存储到查询等一系列操作。开发者可以通过学习和运行这些示例,更好地理解和...

    memcached 的简单java实例

    Memcached是一种高性能、分布式内存对象缓存系统,用于在Web应用程序中减少数据库负载,提高数据访问速度。它将数据和对象存储在内存中,以便快速检索,从而提高了应用程序的响应时间。Memcached是无模式的,这意味...

    java+memcached所需文件

    总的来说,通过结合"memcached-win64-1.4.4-14.zip"和"java_memcached-release_2.6.6.zip",你可以在Windows环境下建立一个本地Memcached服务,并且在Java应用中实现对这个服务的有效利用,以提升应用程序的性能。...

    JAVA-memcached简单例子

    总之,Java与Memcached的结合使用可以极大地提升应用程序的性能,尤其是在需要大量读取操作和减少数据库负载的场景下。通过理解并实践上述知识点,你将能够有效地在Java项目中集成和利用Memcached这一强大的缓存系统...

    memcached-1.2.1-win32.zip 和 java_memcached-release_1.6.zip

    这暗示我们将探讨如何在Java应用程序中集成和使用Memcached作为缓存解决方案。 **Memcached简介** Memcached是一款高性能、分布式的内存对象缓存系统,用于减少数据库负载,提高Web应用的响应速度。它通过将数据...

    memcaChed java client jar包

    在Java应用中使用Memcached客户端,首先需要将`memcached.jar`添加到项目的类路径中。这个JAR文件包含了所有必要的类和方法,使得开发者能够通过Java代码创建连接、存储和检索缓存的数据。例如,你可以使用流行的...

    java_memcached-release_2.6.6.jar及其依赖包

    Java Memcached是一个基于Java的Memcached客户端库,用于在Java应用程序中与Memcached缓存系统进行交互。在标题和描述中提到的`java_memcached-release_2.6.6.jar`是这个库的特定版本,它包含了实现Memcached协议并...

Global site tag (gtag.js) - Google Analytics