MemCached的工具类。获取cached中的所有key

package com.ibs.auth.controller;

import java.io.UnsupportedEncodingException;

import java.util.Date;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import com.whalin.memcached.MemCachedClient;

import com.whalin.memcached.SockIOPool;

public class MemCachedManager {

// 创建全局的唯一实例

protected static MemCachedClient mcc = new MemCachedClient();

protected static MemCachedManager memCachedManager = new MemCachedManager();

// 设置与缓存服务器的连接池

static {

// 服务器列表和其权重

String[] servers = { "127.0.0.1:11211" };

Integer[] weights = { 3 };

// 获取socke连接池的实例对象

SockIOPool pool = SockIOPool.getInstance();

// 设置服务器信息

pool.setServers(servers);

pool.setWeights(weights);

// 设置初始连接数、最小和最大连接数以及最大处理时间

pool.setInitConn(5);

pool.setMinConn(5);

pool.setMaxConn(250);

pool.setMaxIdle(1000 * 60 * 60 * 6);

//设置主线程睡眠时间,每3秒苏醒一次,维持连接池大小

//maintSleep 千万不要设置成30,访问量一大就出问题,单位是毫秒,推荐30000毫秒。

pool.setMaintSleep(30);

// 设置TCP的参数,连接超时等

pool.setNagle(false);

pool.setSocketTO(3000);

pool.setSocketConnectTO(0);

// 初始化连接池

pool.initialize();

// 压缩设置,超过指定大小(单位为K)的数据都会被压缩

//mcc.setCompressEnable(true);

//mcc.setCompressThreshold(64 * 1024);

}

/**

* 保护型构造方法,不允许实例化!

*

*/

protected MemCachedManager() {

}

/**

* 获取唯一实例.

*

* @return

*/

public static MemCachedManager getInstance() {

return memCachedManager;

}

/**

* 添加一个指定的值到缓存中.

*

* @param key

* @param value

* @return

*/

public boolean add(String key, Object value) {

return mcc.add(key, value);

}

public boolean add(String key, Object value, Date expiry) {

return mcc.add(key, value, expiry);

}

public boolean replace(String key, Object value) {

return mcc.replace(key, value);

}

public boolean replace(String key, Object value, Date expiry) {

return mcc.replace(key, value, expiry);

}

public boolean set(String key,Object value){

return mcc.set(key, value);

}

/**

* 根据指定的关键字获取对象.

*

* @param key

* @return

*/

public Object get(String key) {

return mcc.get(key);

}

/**

* 删除key

*/

public boolean delete(String key){

return mcc.delete(key);

}

public static Map<String,Object> getKeysForMap() throws UnsupportedEncodingException{

Map<String,Object> keylist=new HashMap<String,Object>();

//遍历statsItems 获取items:2:number=14

Map<String,Map<String,String>> statsItems=mcc.statsItems();

Map<String,String> statsItems_sub=null;

String statsItems_sub_key=null;

int items_number=0;

String server=null;

//根据items:2:number=14,调用statsCacheDump,获取每个item中的key

Map<String,Map<String,String>> statsCacheDump=null;

Map<String,String> statsCacheDump_sub=null;

String statsCacheDumpsub_key=null;

String statsCacheDumpsub_key_value=null;

for (Iterator iterator=statsItems.keySet().iterator();iterator.hasNext();) {

server=(String) iterator.next();

statsItems_sub=statsItems.get(server);

//System.out.println(server+"==="+statsItems_sub);

for (Iterator iterator_item=statsItems_sub.keySet().iterator();iterator_item.hasNext();) {

statsItems_sub_key=(String) iterator_item.next();

//System.out.println(statsItems_sub_key+":=:"+bb);

//items:2:number=14

if (statsItems_sub_key.toUpperCase().startsWith("items:".toUpperCase()) && statsItems_sub_key.toUpperCase().endsWith(":number".toUpperCase())){

items_number=Integer.parseInt(statsItems_sub.get(statsItems_sub_key).trim());

//System.out.println(statsItems_sub_key+":=:"+items_number);

statsCacheDump=mcc.statsCacheDump(new String[]{server},Integer.parseInt(statsItems_sub_key.split(":")[1].trim()), items_number);

for (Iterator statsCacheDump_iterator=statsCacheDump.keySet().iterator();statsCacheDump_iterator.hasNext();) {

statsCacheDump_sub=statsCacheDump.get(statsCacheDump_iterator.next());

//System.out.println(statsCacheDump_sub);

for (Iterator iterator_keys=statsCacheDump_sub.keySet().iterator();iterator_keys.hasNext();) {

statsCacheDumpsub_key=(String) iterator_keys.next();

statsCacheDumpsub_key_value=statsCacheDump_sub.get(statsCacheDumpsub_key);

System.out.println(statsCacheDumpsub_key);//key是中文被编码了,是客户端在set之前编码的,服务端中文key存的是密文

System.out.println(statsCacheDumpsub_key_value);

keylist.put(statsCacheDumpsub_key,statsCacheDumpsub_key_value);

} }

}

}

}

return keylist;

}

public static void main(String[] args) {

MemCachedManager cache = MemCachedManager.getInstance();

try {

Map<String,Object> map=getKeysForMap();

for(int i=0;i<map.size();i++){

if(map.containsKey("1")){

System.out.println("it‘s OK");

}

}

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

cache.add("hello", 234);

System.out.print("get value : " + cache.get("hello"));

}

}

时间: 2024-08-30 07:37:53

MemCached的工具类。获取cached中的所有key的相关文章

获取redis中所有的key,清空整个 Redis 服务器的数据

获取 redis 中所有的 key 可用使用 *. redis 127.0.0.1:6379> KEYS * Redis Flushall 命令用于清空整个 Redis 服务器的数据(删除所有数据库的所有 key ). 语法 redis Flushall 命令基本语法如下: redis 127.0.0.1:6379> FLUSHALL redis 127.0.0.1:6379> DBSIZE # 1 号数据库的 key 数量 (integer) 6 redis 127.0.0.1:637

Android自定义工具类获取按钮并绑定事件(利用暴力反射和注解)

Android中为按钮绑定事件的有几种常见方式,你可以在布局文件中为按钮设置id,然后在MainActivity中通过findViewById方法获取按钮对象实例,再通过setOnClickListener为按钮绑定事件,如下所示: //1.获取控件 btn = (Button)findViewById(R.id.button1); //2.绑定事件 btn.setOnClickListener(new OnClickListener() { @Override public void onCl

java工具类 获取包下所有类

[java] view plaincopy package com.threeti.util; import java.io.File; import java.io.FileFilter; import java.io.IOException; import java.net.JarURLConnection; import java.net.URL; import java.net.URLDecoder; import java.util.ArrayList; import java.uti

session工具类作为项目中使用【注意注册为对象内方法的array使用】、分类的使用、验证码【重点】

1.实现session的入库工具类注意在注册使用的方法和函数的区别在于:spl_autoload_register('handle');//这样注册的是一个函数spl_autoload_register(array(object,handle));//此时是一个对象的指定方法,使用类名进行调用的情形也是这样的 这种情况在session_set_save_handle();//也是这么使用的 session入库的工具类就是一个比较好用的工具[注意实现的工具类的设计和实现的工作:工具类相当于做扩展功

【原创】字符串工具类--获取汉字对应的拼音(全拼或首字母)

1.引入pinyin4j-2.5.0.jar包 2.代码实现: import java.util.regex.Matcher; import java.util.regex.Pattern; import net.sourceforge.pinyin4j.PinyinHelper; import net.sourceforge.pinyin4j.format.HanyuPinyinOutputFormat; import net.sourceforge.pinyin4j.format.Hanyu

通过Spring工具类获取classpath下的文件资源,解析xml

File cfgFile = ResourceUtils.getFile("classpath:test.txt"); 或者 org.springframework.core.io.Resource fileRource = new ClassPathResource("test.xml"); 获取文件:fileRource.getFile(); 获取文件流:fileRource.getInputStream(); 获取到xml:进行解析:例:<myXml&g

org.apache.commons.lang.exception包的ExceptionUtils工具类获取getFullStackTrace

/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You u

java 获取map中所有的key和value值

java.util.Iterator it = hashmap.entrySet().iterator(); while(it.hasNext()){ java.util.Map.Entry entry = (java.util.Map.Entry)it.next(); entry.getKey() 返回与此项对应的键 entry.getValue() 返回与此项对应的值 } 更多关于java教程 : 请关注 java教程

Java中的工具类和新特性

1:Collections集合框架工具类: /* 集合框架的工具类. Collections:集合框架的工具类.里面定义的都是静态方法. Collections和Collection有什么区别? Collection是集合框架中的一个顶层接口,它里面定义了单列集合的共性方法. 它有两个常用的子接口, List:对元素都有定义索引.有序的.可以重复元素. Set:不可以重复元素.无序. Collections是集合框架中的一个工具类.该类中的方法都是静态的 提供的方法中有可以对list集合进行排序