/**
*
*/
package com.xcj.common.memcached;
import java.io.IOException;
import net.spy.memcached.AddrUtil;
import net.spy.memcached.ConnectionFactoryBuilder;
import net.spy.memcached.MemcachedClient;
import net.spy.memcached.ConnectionFactoryBuilder.Protocol;
import com.xcj.common.util.properties.ReadPropertiesUtil;
/**
* <b>function:</b> MemberCache缓存单例实例只打开一个实例
*
* @project xcjframe
* @package com.xcj.common.memcached
* @fileName com.xcj.*
* @createDate Apr 15, 2014 12:26:24 PM
* @author nyy
*/
public class MemcachedClientFactory {
private volatile static MemcachedClient instance;
private MemcachedClientFactory() {
};
/**
* <b>function:</b> 防止Mc创建更多的实例,故采用单例模式<br>
* 放到正式环境阿里云服务区则把注释的放开
* @project xcjframe
* @package com.xcj.common.memcached
* @fileName com.xcj.common.memcached.MemcachedClientFactory
* @createDate Apr 15, 2014 2:49:34 PM
* @return MemcachedClient
* @author su_jian
*/
public static MemcachedClient getInstance() throws IOException {
if (instance == null) {
synchronized (MemcachedClient.class) {
if (instance == null) {
//TODO 放到正式正式服务器放开 username passowrd
// AuthDescriptor ad = new AuthDescriptor(new String[]{"PLAIN"}, new PlainCallbackHandler("2a1e34a8d37011e3", "Xcj1qaz2wsx")); // 用户名,密码
instance = new MemcachedClient(
new ConnectionFactoryBuilder().setProtocol(
Protocol.BINARY) // 指定使用Binary协议
.setOpTimeout(800222312)// 设置超时时间为100ms
//TODO 放到正式正式服务器放开
// .setAuthDescriptor(ad)
.build(), AddrUtil
.getAddresses(ReadPropertiesUtil.getProperties("memcached.ip")+":"+ReadPropertiesUtil.getProperties("memcached.port")));
}
}
}
return instance;
}
}
//---------------------------------------------------------
package com.xcj.common.memcached;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ExecutionException;
import net.spy.memcached.MemcachedClient;
import net.spy.memcached.internal.OperationFuture;
import com.xcj.common.util.properties.ReadPropertiesUtil;
/**
* <b>function:</b> Membercache缓存工具类
*
* @project xcjframe
* @package com.xcj.common.memcached
* @fileName com.xcj.common.memcached.MemcachedUtil
* @createDate Apr 15, 2014 2:45:52 PM
* @author su_jian
*/
public class MemcachedUtil {
/**
* <b>function:</b> Membercache 将对象放到缓存工具类
* @project xcjframe
* @package com.xcj.common.memcached
* @fileName com.xcj.***
* @createDate Apr 15, 2014 3:58:13 PM
* @return MemcachedClient
* @author su_jian
*/
@SuppressWarnings("unchecked")
public static MemcachedClient putMemcacheIntance(HashMap<String, String> map) {
MemcachedClient mc = null;
try {
// 指定验证机制,推荐PLAIN,
// 部分客户端存在协议BUG,只能使用PLAIN协议(PlainCallbackHandler)
mc = MemcachedClientFactory.getInstance();
OperationFuture future = null;
for (Map.Entry entry : map.entrySet()) {
future = mc.set("" + entry.getKey() + "",Integer.valueOf(ReadPropertiesUtil.getProperties("memcached.exptime")), entry
.getValue()); // 异步接口,注意!返回的是Future
}
future.get(); // future.get() 确保之前(mc.set())操作已经结束
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} finally {
if (mc != null) {
}
// mc.shutdown(); // 关闭,释放资源
}
return mc;
}
/**
* <b>function:</b> Membercache 将对象放到缓存工具类 设置缓存时间
* @project xcjframe
* @package com.xcj.common.memcached
* @fileName com.xcj.***
* @createDate Apr 15, 2014 3:58:13 PM
* @return MemcachedClient
* @author nyy
*/
@SuppressWarnings("unchecked")
public static MemcachedClient putMemcacheIntance(HashMap<String, String> map,Integer time) {
MemcachedClient mc = null;
try {
// 指定验证机制,推荐PLAIN,
// 部分客户端存在协议BUG,只能使用PLAIN协议(PlainCallbackHandler)
mc = MemcachedClientFactory.getInstance();
OperationFuture future = null;
for (Map.Entry entry : map.entrySet()) {
future = mc.set("" + entry.getKey() + "",time, entry.getValue()); // 异步接口,注意!返回的是Future
}
future.get(); // future.get() 确保之前(mc.set())操作已经结束
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} finally {
if (mc != null) {
}
// mc.shutdown(); // 关闭,释放资源
}
return mc;
}
/*
* 根据key来删除缓存
*/
public static boolean deteleKey(String key){
try{
MemcachedClient mc = null;
mc.delete(key);
return true;
}catch(Exception ex){
ex.printStackTrace();
return false;
}
}
/**
* <b>function:</b> Membercache 将对象放到缓存工具类
* @project xcjframe
* @package com.xcj.common.memcached
* @fileName com.xcj.***
* @createDate Apr 15, 2014 3:58:13 PM
* @return MemcachedClient
* @author su_jian
*/
@SuppressWarnings("unchecked")
public static void putMemcacheIntance(Object obj) {
MemcachedClient mc = null;
try {
// 指定验证机制,推荐PLAIN,
// 部分客户端存在协议BUG,只能使用PLAIN协议(PlainCallbackHandler)
mc = MemcachedClientFactory.getInstance();
OperationFuture future = null;
future = mc.add(obj+"_xcj",Integer.valueOf(ReadPropertiesUtil.getProperties("memcached.exptime")), obj); // 异步接口,注意!返回的是Future
future.get(); // future.get() 确保之前(mc.set())操作已经结束
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
} finally {
if (mc != null) {
}
// mc.shutdown(); // 关闭,释放资源
}
}
/**
* <b>function:</b>刷新缓存没有时间
* @project xcjframe
* @package com.xcj.common.memcached
* @fileName com.xcj.***
* @createDate May 12, 2014 2:38:14 PM
* @return void
* @author su_jian
*/
public static void flushMemcache() {
MemcachedClient mc = null;
try {
mc = MemcachedClientFactory.getInstance();
mc.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
/**
* <b>function:</b>刷新缓存延迟时间
* @project xcjframe
* @param int 延迟时间
* @package com.xcj.common.memcached
* @fileName com.xcj.***
* @createDate May 12, 2014 2:38:14 PM
* @return void
* @author su_jian
*/
public static void flushMemcache(int delay) {
MemcachedClient mc = null;
try {
mc = MemcachedClientFactory.getInstance();
mc.flush(delay);
} catch (IOException e) {
e.printStackTrace();
}
}
}
//-------------------------------------
@SuppressWarnings("unchecked")
public List<Dict> getDictList(String typeCode) {
MemcachedClient mc;
List<Dict> list = null;
try {
mc = MemcachedClientFactory.getInstance();
list = (List) mc.get(typeCode);
if (list == null) {
HashMap map = dictService.getDictMap();
MemcachedUtil.putMemcacheIntance(map);
list = (List) mc.get(typeCode);
}else{
System.out.print("111111111111111111");
}
} catch (IOException e) {
e.printStackTrace();
}
return list;
}
//------------------------------------------
public void setSession(String sessionId, String token, Integer userId){
HashMap map = new HashMap();
map.put("sessionId", sessionId);
map.put("token", token);
map.put("date",DateUtil.getCurrentTimeByDate());
map.put("userId", userId);
MemcachedUtil.putMemcacheIntance(map,10000);
}
相关推荐
MemcachedClient client = new MemcachedClient(AddrUtil.getAddresses("localhost:11211")); // 设置 key-value client.set("key", 30, "value").get(); // 获取 value String value = (String) client....
在C#代码中,可以创建一个`MemcachedClient`实例,并设置服务器的连接信息。例如: ```csharp var client = new MemcachedClient(); client.Connect("127.0.0.1", 11211); // 假设Memcached服务器运行在本地,端口...
memcachedclient-2.0.1.jar 之前在网上搜了很久没搜到,所以找到了跟大家分享
memcached的java客户端jar包,方便调用memcached的服务
### Memcached Client 使用手册 #### Cache Client 接口定义与功能概述 - **ICache**:作为缓存的基础接口,提供了缓存的基本操作方法。这些方法涵盖了缓存数据的存储、检索、删除等功能,旨在为应用程序提供高效...
<property name="memcachedClient" ref="memcachedClient" /> ``` 3. **启用缓存注解**:在Spring配置中开启缓存支持,并配置默认的缓存策略: ```xml ``` 4. **使用缓存**:现在,你可以在需要缓存的方法...
"C# Memcached client.zip" 文件可能包含了一个用C#编写的Memcached客户端库的源代码,供开发者集成到他们的.NET应用中。 Memcached的工作原理是基于键值对存储,它将数据存储在内存中,以便快速访问。当应用程序...
MemcachedClient client = new MemcachedClient(new InetSocketAddress("localhost", 11211)); ``` 这里`localhost`是Memcached服务器的地址,`11211`是默认的Memcached端口号。 2. 存储数据: ```java client.set...
"memcached for java client 例子" 指的是一个使用Java语言编写的客户端库,用于与memcached缓存系统进行交互。Memcached是一种高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提升Web应用的响应速度。 **...
MemcachedClient4J 一个使用netty框架编写的mecached客户端,实现mecached ASCII协议,性能超过Spymecached。 有许多功能和扩展是完美的。 提供同步和异步两种接口,使用方法非常简单,示例如下: Memcached...
要配置Spring Memcached,我们需要在Spring的配置文件(如`applicationContext.xml`)中声明`MemcachedClient`。这通常涉及到以下步骤: 1. 引入依赖:在`pom.xml`或`build.gradle`中添加`spring-memcached`的依赖...
Memcached Java Client API详解.doc
它的使用通常包括初始化一个MemcachedClient实例,配置服务器节点,然后通过这个客户端对象进行get和set操作来存取数据。 其次,Xmemcached是另一个强大且高效的Java客户端,它支持多线程、NIO和Future模式,提供了...
Memcached是一种广泛使用的分布式内存对象缓存系统,它能够减轻数据库的负担,通过将常用数据存储在内存中来加速应用程序的响应速度。本主题将深入探讨如何基于Java客户端对Memcached进行封装,以便更高效地在Java...
包含服务端: memcached-win32.server.1.2.6.0 memcached-win32.server.1.4.4 包含客户端: Enyim.Caching1.2.0.0.dll Enyim.Caching2.12.0.0.dll Memcached.ClientLibrary1.0.0 安装说明文档
这个压缩包文件“memcached_1.4.13(win64&32)_client2.12”提供了针对Windows操作系统的memcached服务端程序,支持32位和64位环境,以及Enyim.Caching.dll,这是一个适用于.NET Framework的memcached客户端库,版本...
【Memcached 缓存系统详解】 Memcached 是一个高性能、分布式的内存对象缓存系统,主要用于减少数据库的负载,提高应用程序的性能。它通过在内存中存储数据来提供快速访问,而不是每次请求时都去查询数据库。...
MemcachedClient memcachedClient = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses("localhost:11211")); ``` 接着,可以使用`set`方法存储数据,`get`方法获取数据,`delete`方法...
memcachedClient = new MemcachedClient(AddrUtil.getAddresses("localhost:11211")); } catch (Exception e) { System.err.println("无法初始化MemcachedClient: " + e.getMessage()); } } public static ...