本文复制其他播客,有好的技术文章希望各位大神能告知... 谢谢。
如何使用Java操作Memcached实例:
代码一:
package com.ghj.packageoftool;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter; import java.io.StringWriter; import java.lang.management.ManagementFactory; import java.text.SimpleDateFormat; import java.util.Date; import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool; /** * Memcached工具类 * * @author GaoHuanjie */ public class MemcachedUtils { private static MemCachedClient memCachedClient; static { /************************************配置Memcached**************************************/ SockIOPool sockIOPool = SockIOPool.getInstance(); sockIOPool.setServers(new String[]{ "127.0.0.1:11211"});//设置memcached服务器地址 sockIOPool.setWeights(new Integer[]{ 3}); //设置每个MemCached服务器权重 sockIOPool.setFailover(true); //当一个memcached服务器失效的时候是否去连接另一个memcached服务器. sockIOPool.setInitConn(10); //初始化时对每个服务器建立的连接数目 sockIOPool.setMinConn(10); //每个服务器建立最小的连接数 sockIOPool.setMaxConn(100); //每个服务器建立最大的连接数 sockIOPool.setMaintSleep(30); //自查线程周期进行工作,其每次休眠时间 sockIOPool.setNagle(false); //Socket的参数,如果是true在写数据时不缓冲,立即发送出去。Tcp的规则是在发送一个包之前,包的发送方会等待远程接收方确认已收到上一次发送过来的包;这个方法就可以关闭套接字的缓存——包准备立即发出。 sockIOPool.setSocketTO(3000); //Socket阻塞读取数据的超时时间 sockIOPool.setAliveCheck(true); //设置是否检查memcached服务器是否失效 sockIOPool.setMaxIdle(1000*30*30); // 设置最大处理时间 sockIOPool.setSocketConnectTO(0); //连接建立时对超时的控制 sockIOPool.initialize(); // 初始化连接池 if (memCachedClient == null){ memCachedClient = new MemCachedClient(); memCachedClient.setPrimitiveAsString(true); //是否将基本类型转换为String方法 } } private MemcachedUtils() { } /** * 向缓存添加键值对。注意:如果键已经存在,则之前的键对应的值将被替换。 * * @author GaoHuanjie */ public static boolean set(String key, Object value) { try { return memCachedClient.set(key, value); } catch (Exception e) { MemcachedLogUtils.writeLog("Memcached set方法报错,key值:" + key + "\r\n" + exceptionWrite(e)); return false; } } /** * 向缓存添加键值对并为该键值对设定逾期时间(即多长时间后该键值对从Memcached内存缓存中删除,比如: new Date(1000*10),则表示十秒之后从Memcached内存缓存中删除)。注意:如果键已经存在,则之前的键对应的值将被替换。 * * @author GaoHuanjie */ public static boolean set(String key, Object value, Date expire) { try { return memCachedClient.set(key, value, expire); } catch (Exception e) { MemcachedLogUtils.writeLog("Memcached set方法报错,key值:" + key + "\r\n" + exceptionWrite(e)); return false; } } /** * 向缓存添加键值对。注意:仅当缓存中不存在键时,才会添加成功。 * * @author GaoHuanjie */ public static boolean add(String key, Object value) { try { if (get(key) != null) { MemcachedLogUtils.writeLog("Memcached add方法报错,key值:" + key + "\r\n" + exceptionWrite(new Exception("Memcached内存缓存中已经存在该键值对"))); return false; }else{ return memCachedClient.add(key, value); } } catch (Exception e) { MemcachedLogUtils.writeLog("Memcached add方法报错,key值:" + key + "\r\n" + exceptionWrite(e)); return false; } } /** * 向缓存添加键值对并为该键值对设定逾期时间(即多长时间后该键值对从Memcached内存缓存中删除,比如: new Date(1000*10),则表示十秒之后从Memcached内存缓存中删除)。注意:仅当缓存中不存在键时,才会添加成功。 * * @author GaoHuanjie */ public static boolean add(String key, Object value, Date expire) { try { if (get(key) != null) { MemcachedLogUtils.writeLog("Memcached add方法报错,key值:" + key + "\r\n" + exceptionWrite(new Exception("Memcached内存缓存中已经存在该键值对"))); return false; }else{ return memCachedClient.add(key, value, expire); } } catch (Exception e) { MemcachedLogUtils.writeLog("Memcached add方法报错,key值:" + key + "\r\n" + exceptionWrite(e)); return