CacheUtil - Memcached全局工具类

标签: cacheutil memcached 工具 | 发表时间:2014-11-17 15:05 | 作者:uule
出处:http://www.iteye.com

1、memCache.properties:

memcache=192.168.3.230\:11211
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);
		}

 

..

 

 



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [cacheutil memcached 工具] 推荐:

CacheUtil - Memcached全局工具类

- - 企业架构 - ITeye博客
* 如果key不存在,存进去 true. 已有 0 人发表留言,猛击->> 这里<<-参与讨论. —软件人才免语言低担保 赴美带薪读研.

memcached+magent实现memcached集群

- - 编程语言 - ITeye博客
首先说明下memcached存在如下问题.   本身没有内置分布式功能,无法实现使用多台Memcache服务器来存储不同的数据,最大程度的使用相同的资源;无法同步数据,容易造成单点故障. (memagent代理实现集群).       在 Memcached中可以保存的item数据量是没有限制的,只要内存足够.

MemCached详解

- - CSDN博客推荐文章
首先,我们来了解一下MemCached与MemCache之间的区别:. Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统. 用于加速动态web应用程序,减轻数据库负载. 它可以应对任意多个连接,使用非阻塞的网络IO. 由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这 些HashTable.

Memcached调优

- - 四火的唠叨
文章系本人原创,转载请保持完整性并注明出自 《四火的唠叨》. 项目中有一个对实时响应性比较高的服务,引入了Memcached以减少延迟和减少数据库压力. 但是期间遇到了一些问题,这里记录一些调优细节. 最开始我使用的是 Memcached Java Client,但是最后放弃了,放弃原因包括:.

memcached协议

- - 开源软件 - ITeye博客
旧版: http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt. 新版: https://github.com/memcached/memcached/blob/master/doc/protocol.txt.

Java使用memcached

- - 互联网 - ITeye博客
首先到 http://danga.com/memcached下载memcached的windows版本和java客户端jar包,目前最新版本是memcached-1.2.1-win32.zip和java_memcached-release_1.6.zip,分别解压后即可. 然后是安装运行memcached服务器,我们将memcached-1.2.1-win32.zip解压后,进入其目录,然后运行如下命令:c:>;memcached.exe -d install
c:>memcached.exe -l 127.0.0.1 -m 32 -d start.

Spring+memcached整合

- - 行业应用 - ITeye博客
1)  下载memcached服务端memcached-1.2.6-win32-bin.zip,地址:http:. 2)  下载java版客户端 java_memcached-release_2.6.1.zip. 3)  解压缩memcached-1.2.6-win32-bin.zip到指定目录,例如:D:\memcached-1.2.6-win32 ,.

转 redis vs memcached

- - 数据库 - ITeye博客
传统MySQL+ Memcached架构遇到的问题.   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:.   1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间.

Memcached安全性

- - xiaobaoqiu Blog
1.Memcached -l参数. 1.Memcached -l参数. 最近整理了组内使用的Memcached. 发现很多问题,其中一个问题就是开发机器测试机器可以直连线上的Memcached. 这也是memcached公认的问题:memcached 是一种很简单、有效的协议,但也有其缺点,就是 memcached 自身没有 ACL 控制(或者相当弱).

Memcached的LRU算法

- Eric - 平凡的世界
最近计划对Memcached做一些尝试性的改造,主要是针对Memcached在处理过期数据的时候进行改造,以实现在一个缓存的过期时间达到的时候,可以对该缓存的数据进行一个验证和存储的处理. 这个需求,主要是为了解决MySQL的写入瓶颈,通过延期、合并写入请求来减少MySQL的并发写入量. 现在逐渐记录出来和有需要的朋友一起讨论.