`

MemcachedClient

 
阅读更多

/**

 * 

 */

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);

 

 

}

 

 

分享到:
评论

相关推荐

    memcached安装包以及MemCachedClient

    MemcachedClient client = new MemcachedClient(AddrUtil.getAddresses("localhost:11211")); // 设置 key-value client.set("key", 30, "value").get(); // 获取 value String value = (String) client....

    c# asp.net memcached client 调用示例

    在C#代码中,可以创建一个`MemcachedClient`实例,并设置服务器的连接信息。例如: ```csharp var client = new MemcachedClient(); client.Connect("127.0.0.1", 11211); // 假设Memcached服务器运行在本地,端口...

    memcachedclient-2.0.1.jar

    memcachedclient-2.0.1.jar 之前在网上搜了很久没搜到,所以找到了跟大家分享

    memcached client for java

    memcached的java客户端jar包,方便调用memcached的服务

    Memcached Client 使用手册

    ### Memcached Client 使用手册 #### Cache Client 接口定义与功能概述 - **ICache**:作为缓存的基础接口,提供了缓存的基本操作方法。这些方法涵盖了缓存数据的存储、检索、删除等功能,旨在为应用程序提供高效...

    spring调用memcached client for java

    &lt;property name="memcachedClient" ref="memcachedClient" /&gt; ``` 3. **启用缓存注解**:在Spring配置中开启缓存支持,并配置默认的缓存策略: ```xml ``` 4. **使用缓存**:现在,你可以在需要缓存的方法...

    C# Memcached client.zip

    "C# Memcached client.zip" 文件可能包含了一个用C#编写的Memcached客户端库的源代码,供开发者集成到他们的.NET应用中。 Memcached的工作原理是基于键值对存储,它将数据存储在内存中,以便快速访问。当应用程序...

    memcaChed java client jar包

    MemcachedClient client = new MemcachedClient(new InetSocketAddress("localhost", 11211)); ``` 这里`localhost`是Memcached服务器的地址,`11211`是默认的Memcached端口号。 2. 存储数据: ```java client.set...

    memcached for java client 例子

    "memcached for java client 例子" 指的是一个使用Java语言编写的客户端库,用于与memcached缓存系统进行交互。Memcached是一种高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提升Web应用的响应速度。 **...

    MemcachedClient4J:它是 java 的 memcached 客户端

    MemcachedClient4J 一个使用netty框架编写的mecached客户端,实现mecached ASCII协议,性能超过Spymecached。 有许多功能和扩展是完美的。 提供同步和异步两种接口,使用方法非常简单,示例如下: Memcached...

    Spring memcached 源码

    要配置Spring Memcached,我们需要在Spring的配置文件(如`applicationContext.xml`)中声明`MemcachedClient`。这通常涉及到以下步骤: 1. 引入依赖:在`pom.xml`或`build.gradle`中添加`spring-memcached`的依赖...

    Memcached Java Client API详解

    Memcached Java Client API详解.doc

    Memcached负载均衡Jar包大全

    它的使用通常包括初始化一个MemcachedClient实例,配置服务器节点,然后通过这个客户端对象进行get和set操作来存取数据。 其次,Xmemcached是另一个强大且高效的Java客户端,它支持多线程、NIO和Future模式,提供了...

    基于memcached client for java的cache封装

    Memcached是一种广泛使用的分布式内存对象缓存系统,它能够减轻数据库的负担,通过将常用数据存储在内存中来加速应用程序的响应速度。本主题将深入探讨如何基于Java客户端对Memcached进行封装,以便更高效地在Java...

    memcached-win32-server1.26服务端与客户端Enyim.Caching与Memcached.ClientLibrary

    包含服务端: 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

    这个压缩包文件“memcached_1.4.13(win64&32)_client2.12”提供了针对Windows操作系统的memcached服务端程序,支持32位和64位环境,以及Enyim.Caching.dll,这是一个适用于.NET Framework的memcached客户端库,版本...

    MemCached Cache Java Client封装优化历程.docx

    【Memcached 缓存系统详解】 Memcached 是一个高性能、分布式的内存对象缓存系统,主要用于减少数据库的负载,提高应用程序的性能。它通过在内存中存储数据来提供快速访问,而不是每次请求时都去查询数据库。...

    java_memcached-release_2.6.3.zip

    MemcachedClient memcachedClient = new MemcachedClient(new BinaryConnectionFactory(), AddrUtil.getAddresses("localhost:11211")); ``` 接着,可以使用`set`方法存储数据,`get`方法获取数据,`delete`方法...

    java使用Memcached简单教程

    memcachedClient = new MemcachedClient(AddrUtil.getAddresses("localhost:11211")); } catch (Exception e) { System.err.println("无法初始化MemcachedClient: " + e.getMessage()); } } public static ...

Global site tag (gtag.js) - Google Analytics