Memcached客户端utils类
来源:互联网 发布:大华网络摄像机 复位 编辑:程序博客网 时间:2024/06/05 11:40
0.个人标签
我的CSDN博客地址: http://blog.csdn.net/caicongyang
1.依赖的jar包
commons-pool-1.5.6.jar
slf4j-api-1.6.1.jar
java_memcached-release_2.6.6.jar
slf4j-simple-1.6.1.jar
2.DangaMemCacheClient.java
package com.ccy.comm.utils;import java.io.UnsupportedEncodingException;import java.net.URLDecoder;import java.util.ArrayList;import java.util.Date;import java.util.Iterator;import java.util.List;import java.util.Map;import java.util.concurrent.locks.ReentrantLock;import com.danga.MemCached.MemCachedClient;import com.danga.MemCached.SockIOPool;/** * <p> * Title: DangaMemCacheClient.java * Package * </p> * <p> * Description: MemCacheClient Utils类 * <p> * @author Tom.Cai * @created 2015-7-16 下午3:49:24 * @version V1.0 * */public class DangaMemCacheClient {private static DangaMemCacheClient instance = null;private static ReentrantLock lock = new ReentrantLock();private MemCachedClient mc;private static int expTime = 3600 * 24 * 30;private static String address="192.168.253.132";private static String port="12000";public static DangaMemCacheClient getInstance() {if (instance == null) {lock.lock();try {if (instance == null) {instance = new DangaMemCacheClient();}} catch (Exception e) {e.printStackTrace();} finally {lock.unlock();}}return instance;}private DangaMemCacheClient() {try {mc = new MemCachedClient();String[] servers = { address+":"+port };Integer[] weights = { 10 };SockIOPool pool = SockIOPool.getInstance();pool.setServers(servers);pool.setWeights(weights);pool.setInitConn(5);pool.setMinConn(5);pool.setMaxConn(250);pool.setMaxIdle(expTime);pool.setMaintSleep(30);pool.setNagle(false);pool.setSocketTO(30);pool.setSocketConnectTO(0);pool.initialize();} catch (Exception e) {e.printStackTrace();}}public Object getObject(String key) {return mc.get(key);}public boolean setObject(String key, Object value) {return mc.set(key, value);}public boolean setObject(String key, Object value, long time) {return mc.set(key, value, new Date(time));}public boolean removeObject(String key) {return mc.delete(key);}/** * 循环获取所有Memcache中的所有key * @return */public List<String> getKeys() {List<String> keyList = new ArrayList<String>();Map slabs = mc.statsItems();Iterator itemsItr = slabs.keySet().iterator();while (itemsItr.hasNext()) {String serverInfo1 = itemsItr.next().toString();// 取得這個server的各種 status [itemname:number:field=value]Map itemNames = (Map) slabs.get(serverInfo1);Iterator itemNameItr = itemNames.keySet().iterator();// 以status key值去迴圈while (itemNameItr.hasNext()) {String itemName = itemNameItr.next().toString();// 拆解status 欄位// itemAtt[0] = itemname// itemAtt[1] = CacheDump的參數// itemAtt[2] = field:number or ageString[] itemAtt = itemName.split(":");if (itemAtt[2].startsWith("number")) {Map chcheDump = mc.statsCacheDump(Integer.parseInt(itemAtt[1]), 0);Iterator itr = chcheDump.keySet().iterator();int i = 0;while (itr.hasNext()) {String serverInfo2 = itr.next().toString();Map items = (Map) chcheDump.get(serverInfo2);Iterator keyItr = items.keySet().iterator();while (keyItr.hasNext()) {String key = keyItr.next().toString();String memKey = key;i++;try {key = URLDecoder.decode(key, "UTF-8");String value = ((String) items.get(memKey));value = value.substring(value.indexOf(";") + 2, value.indexOf(" s"));Date date = new Date();date.setTime(Long.valueOf(value + "000"));keyList.add(key);} catch (Exception ex) {}}}}}}return keyList;}public static void main(String[] args) throws UnsupportedEncodingException {DangaMemCacheClient dmcc = DangaMemCacheClient.getInstance();dmcc.setObject("ccy0", "test0");dmcc.setObject("ccy1", "test1");System.out.println((String)dmcc.getObject("ccy0"));System.out.println((String)dmcc.getObject("ccy1"));List<String> list = dmcc.getKeys();for(String key : list){System.out.println(key);}}}
3.说明
本人将其写成一个工具来适用于只缓存不存数据库的情况,当然可以写一个service在供spring来调用!
我的CSDN博客地址: http://blog.csdn.net/caicongyang
1 0
- Memcached客户端utils类
- memcached 客户端
- Memcached(三)Memcached客户端
- MemCached的PHP客户端操作类
- MemCached的PHP客户端操作类
- MemCached的PHP客户端操作类二
- php的memcached客户端memcached
- Java的Memcached客户端
- JAVA客户端调用memcached
- Memcached Java客户端编程
- Memcached Java客户端编程
- Java的Memcached客户端
- memcached java客户端比较
- Java的Memcached客户端
- Memcached Java客户端编程
- python memcached 客户端比较
- memcached java客户端实例
- Memcached客户端API
- 金典 SQL笔记(4)
- cocos2d-x游戏开发(十四)用shader使图片背景透明
- 二维数组的内存分配
- 测试管理工具的使用
- 在只有MDF和LDF文件的情况下 恢复SQLSERVER数控
- Memcached客户端utils类
- mongodb异常:Unclean shutdown detected
- 论Nim中的 proc 和 method
- linux 下安装mysql
- 使用了scriptmanager,同时用了CheckBoxList,实现CheckBoxList单选
- swift 使用 AFHTTPRequestOperationManager
- 单选框 多选框取值
- SinaStockInfo
- cocos2d-x游戏开发(十五)游戏加载动画loading界面