`
uule
  • 浏览: 6352090 次
  • 性别: Icon_minigender_1
  • 来自: 一片神奇的土地
社区版块
存档分类
最新评论

CacheUtil - Memcached全局工具类

 
阅读更多

1、memCache.properties:

memcache=92.0.0.0\:56666
time=7200

 

package com.common.common;

import java.io.IOException;
import java.net.InetSocketAddress;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;

import com.cdoframework.cdolib.data.cdo.CDO;

import net.spy.memcached.MemcachedClient;


/**
 * cache的失效时间,0或者负数为永久有效
 * 如果超过60*60*24*30为从1970年以来的时间数,否则为从现在起的时间数
 * @author Administrator
 *
 */
public class CacheUtil {
	public static int DEFAULT_TIMEOUT = 1;
    public static TimeUnit DEFAULT_TIMEUNIT = TimeUnit.SECONDS;
	private static MemcachedClient memCachedClient;
	static{
		try {
			//memCachedClient = new MemcachedClient();
			String hosts = ProPertiesUtil.getValue("/memCache.properties", "memcache");
			String[] servers = hosts.split(";");
			List<InetSocketAddress> lsinetSocketAddress = new ArrayList<InetSocketAddress>();
			for(int i=0;i<servers.length;i++){
				String[] hp = servers[i].split(":");
				lsinetSocketAddress.add(new InetSocketAddress(hp[0],Integer.parseInt(hp[1])));
			}
			memCachedClient = new MemcachedClient(lsinetSocketAddress);
		} catch (NumberFormatException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	/**
	 * 覆盖此key值
	 * @param key
	 * @param object
	 * @param time
	 * @return
	 */
	public static boolean put(String key,Object object,int time){
		Future<Boolean> f = memCachedClient.set(key, time, object);
		return getBooleanValue(f);
	}
	/**
	 * 如果key不存在,存进去 true
	 * 如果存在,false
	 * @param key
	 * @param object
	 * @param time
	 * @return
	 */
	public static boolean putNotExist(String key,Object object,int time){
		Future<Boolean> f = memCachedClient.add(key, time, object);
		return getBooleanValue(f);
	}
	/**
	 * 获得
	 * @param key
	 * @return
	 */
	public static Object get(String key){
		return memCachedClient.get(key);
	}
	/**
	 * 删除
	 * @param key
	 * @return
	 */
	public static boolean delete(String key) {  
        Future<Boolean> f = memCachedClient.delete(key);  
        return getBooleanValue(f);  
    }
	
	/**
	 * 清除cache
	 * @return
	 */
    public boolean flush() {  
        Future<Boolean> f = memCachedClient.flush();  
        return getBooleanValue(f);  
    }  
	private static  boolean  getBooleanValue(Future<Boolean> f) {  
        try {  
            Boolean bool = f.get(DEFAULT_TIMEOUT,DEFAULT_TIMEUNIT);
            return bool.booleanValue();  
        } catch (Exception e) {  
            f.cancel(false);  
            return false;  
        }  
    }
	
	public static void main(String[] args) {
		System.out.println(CacheUtil.get("1more_award_5_33" ));
	}
}

 使用:

Object object = CacheUtil.get("global_access_token");
		if(object == null){
			access_token = HttpsUtil.getTokenFromWX();
			CacheUtil.put("global_access_token", access_token, 7180);
		}

 

..

for(;;)
{
	//全局锁
	
	/**
	 * 如果key不存在,存进去 true
	 * 如果存在,false
	 * @param key
	 * @param object
	 * @param time
	 * @return
	 */
	Boolean lock = CacheUtil.putNotExist("detail_lock", "detail", 20);
	
	try{
		
		if(lock){
			...	
		}
		
	}catch(Exception ex){
		logger.info("ex:" + ex.getMessage()+ ex.getStackTrace());
	}finally{
		CacheUtil.delete("detail_lock");
		logger.info("用户[" + strUserName +"]释放锁..");		
	}
	break;
	
}


public static boolean putNotExist(String key,Object object,int time){
		Future<Boolean> f = memCachedClient.add(key, time, object);
		return getBooleanValue(f);
	}

 

 

 

分享到:
评论

相关推荐

    python-memcached python-memcached

    Python-memcached是Python语言的一个库,用于与Memcached缓存系统进行交互。Memcached是一种高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。Python-memcached库则...

    php-memcached-3.1.3.tar.gz

    安装php-memcached扩展 https://github.com/php-memcached-dev/php-memcached tar -zxvf ...-disable-memcached-sasl && make && make install

    hibernate-memcached包

    **hibernate-memcached-1.2.2.jar** 文件是这个扩展的核心库,其中包含了所有必要的类和接口,使得Hibernate能够识别并使用Memcached作为二级缓存。这个版本的hibernate-memcached已经过测试和优化,确保与1.2.2版本...

    java-memcached-2.6.6.jar

    java-memcached-2.6.6.jar

    python-memcached-latest.tar

    总的来说,`python-memcached-latest.tar`提供的库是Python开发者在处理高并发、数据读取密集型应用时的一个强大工具。通过使用Memcached作为缓存层,可以显著提高数据读取速度,减轻数据库压力,提升整体系统性能。

    spring-mybatis-memcached.zip_Memcached java_annotation_mybatis_m

    因为 simple-spring-memcached 暂时和 MyBatis3 没办法直接整合(MyBatis3 不再需要 DAO 实现类),simple-spring-memcached annotation 在 interface 方法里不起作用。见我提交的 Bug。 ssm3-springcache-mybatis3-...

    hibernate-memcached-1.5.jar

    这个包是最高版本了,google code是1.22,但是这个版本是基础班的1.5版本.是github上源代码经过我打包出来的jar

    python-memcached

    8. **持久化**:虽然Memcached不支持数据持久化,但可以通过配合其他工具(如Redis或数据库)实现一定程度的持久化,Python-Memcached可以作为这些工具的缓存层。 9. **错误处理**:Python-Memcached库能够处理...

    hibernate-memcached-1.1.0-sources.zip

    《Hibernate与Memcached整合详解——基于hibernate-memcached-1.1.0源码分析》 在当今的Web开发领域,数据持久化是一个必不可少的环节,而Hibernate作为Java领域广泛使用的对象关系映射(ORM)框架,极大地简化了...

    Nagios-Plugins-Memcached-0.02.tar.gz

    "Nagios-Plugins-Memcached-0.02.tar.gz" 是一个针对Nagios的插件包,专门用于监控Memcached服务。这个压缩包包含了版本号为0.02的Nagios Memcached插件,用于检测Memcached服务器的状态,包括但不限于内存使用情况...

    cas-client-support-distributed-memcached-3.2.0.jar

    cas-client-support-distributed-memcached-3.2.0.jar

    simple-spring-memcached

    总的来说,Simple-Spring-Memcached是Java开发者在Spring环境中使用Memcached的强大工具,它通过注解简化了缓存操作,提升了开发效率。掌握SSM的使用,不仅可以优化应用性能,还能让我们更好地理解和运用缓存这一...

    simple-spring-memcached集成memcache

    3. **配置SSM**:创建一个Spring配置类,定义Memcached的相关bean。这里我们将配置MemcachedTemplate和MemcachedCacheManager,以便于操作缓存。 ```java @Configuration public class MemcachedConfig { @...

    Simple-Spring-Memcached

    在JAVA中使用Memcached进行行缓存是比较复杂的。Simple-Spring-Memcachd(SSM)企图通过实现几个基础的使用项来简化Memcached的使用。 该项在java-memcached客户端的基础上使用java5的注解和Sping/AspectJ的AOP,使...

    hibernate-memcached-1.1.0.jar

    hibernate-memcached-1.1.0.jar

    php-memcached-demo.tar.gz

    PHP-Memcached-Demo项目,通过一个压缩包形式(php-memcached-demo.tar.gz)提供了一个实战示例,帮助开发者了解并掌握如何在PHP环境中使用Memcached作为缓存服务,以实现数据的快速访问和存储。本文将深入探讨这一...

    Python库 | python-binary-memcached-0.24.1.tar.gz

    资源分类:Python库 所属语言:Python 资源全名:python-binary-memcached-0.24.1.tar.gz 资源来源:官方 安装方法:https://lanzao.blog.csdn.net/article/details/101784059

    python-memcached-1.58-1.el7.noarch.rpm

    官方离线安装包,亲测可用。使用rpm -ivh [rpm完整包名] 进行安装

    Laravel开发-laravel-memcached-plus

    在本文中,我们将深入探讨Laravel开发中的一个关键组件——`laravel-memcached-plus`扩展。这个扩展针对Laravel5的内置Memcached缓存驱动进行了增强,为开发者提供了更全面的功能,包括持久连接、SASL认证以及自定义...

    hibernate-memcached, 在Hibernate中,使用Memcached作为第二级分布式缓存的库.zip

    hibernate-memcached, 在Hibernate中,使用Memcached作为第二级分布式缓存的库 休眠 memcachedHibernate中使用Memcached作为第二级分布式缓存的库。基于优秀的spymemcached客户端包含对 Whalin ( danga ) memcached...

Global site tag (gtag.js) - Google Analytics