Memcachedclientutils类
0.个人标签
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 age
String[] 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.说明
Memcachedclientutils类的更多相关文章
- Java类的继承与多态特性-入门笔记
相信对于继承和多态的概念性我就不在怎么解释啦!不管你是.Net还是Java面向对象编程都是比不缺少一堂课~~Net如此Java亦也有同样的思想成分包含其中. 继承,多态,封装是Java面向对象的3大特 ...
- C++ 可配置的类工厂
项目中常用到工厂模式,工厂模式可以把创建对象的具体细节封装到Create函数中,减少重复代码,增强可读和可维护性.传统的工厂实现如下: class Widget { public: virtual i ...
- Android请求网络共通类——Hi_博客 Android App 开发笔记
今天 ,来分享一下 ,一个博客App的开发过程,以前也没开发过这种类型App 的经验,求大神们轻点喷. 首先我们要创建一个Andriod 项目 因为要从网络请求数据所以我们先来一个请求网络的共通类. ...
- ASP.NET MVC with Entity Framework and CSS一书翻译系列文章之第二章:利用模型类创建视图、控制器和数据库
在这一章中,我们将直接进入项目,并且为产品和分类添加一些基本的模型类.我们将在Entity Framework的代码优先模式下,利用这些模型类创建一个数据库.我们还将学习如何在代码中创建数据库上下文类 ...
- ASP.NET Core 折腾笔记二:自己写个完整的Cache缓存类来支持.NET Core
背景: 1:.NET Core 已经没System.Web,也木有了HttpRuntime.Cache,因此,该空间下Cache也木有了. 2:.NET Core 有新的Memory Cache提供, ...
- .NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类
.NET Core中间件的注册和管道的构建(2)---- 用UseMiddleware扩展方法注册中间件类 0x00 为什么要引入扩展方法 有的中间件功能比较简单,有的则比较复杂,并且依赖其它组件.除 ...
- Java基础Map接口+Collections工具类
1.Map中我们主要讲两个接口 HashMap 与 LinkedHashMap (1)其中LinkedHashMap是有序的 怎么存怎么取出来 我们讲一下Map的增删改查功能: /* * Ma ...
- PHP-解析验证码类--学习笔记
1.开始 在 网上看到使用PHP写的ValidateCode生成验证码码类,感觉不错,特拿来分析学习一下. 2.类图 3.验证码类部分代码 3.1 定义变量 //随机因子 private $char ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
随机推荐
- word-wrap
平时的网页制作中碰到过这样的情况,比如说在blog中制作了一个完美而且又靓丽的评论布局,让你的用户浏览网页是可以给你添加评论,但当有人发布了一个原始网址或者其它超长的文本时,你此时的布局就被他们给彻底 ...
- Java 的初始化顺序
初始化顺序: 1.将对象内存空间初始化为二进制0(所有的数据成员被设为默认值) 2.如果该类有基类则初始化其基类(调用默认基类构造器,也可在子类构造器中指定调用基类的某个构造器) 3. 静态成员和静态 ...
- tomcat虚拟主机
直接看配置文件吧,有点基础的都懂 <Host name="localhost" appBase="webapps" unpackWARs="fa ...
- CF 996B World Cup 【找规律/模拟】
CF [题意]:圆形球场有n个门,Allen想要进去看比赛.Allen采取以下方案进入球场:开始Allen站在第一个门,如果当前门前面有人Allen会花费单位时间走到下一个门,如果没人Allen从这个 ...
- OA项目实战(一) 概述
从本篇博文开始,我为大家简单介绍一下办公自动化(Office Automation,简称OA). 1.OA简介 OA是将现代办公和计算机网络的功能相结合的一种新型办公方式,是针对日常工作,改变 ...
- hdu6138(后缀数组)
hdu6138 题意 给出若干个字符串,每次查询两个字符串,求两个字符串的公共子串且在给出的某一个字符串中作为前缀的最大长度. 分析 求公共子串:后缀数组 判断前缀:字典树 求完后缀数组,遍历下 \( ...
- 正则 lazy
- intellij idea 为JavaEE项目建立Servlet
建立Servlet的方法 顶部菜单栏 View > Tool Windows > Web. 然后互相web窗口 右键Web>new>Servlet 弹出窗口
- 【最大权闭合子图/最小割】BZOJ3438-小M的作物【待填】
[题目大意] 小M在MC里开辟了两块巨大的耕地A和B(你可以认为容量是无穷),现在,小P有n中作物的种子,每种作物的种子有1个(就是可以种一棵作物)(用1...n编号),现在,第i种作物种植在A中种植 ...
- Problem I: 零起点学算法30——输出四位完全平方数
#include<stdio.h> int main() { int a,b,c,d,s,i; ;i<;i++){ s=i*i; a=s/; b=s%/; c=s%/; d=s%; ...