java MemCachedClient遍历memcache中所有的key
在java memcached client documentation中没有提共遍历memcache所有key的方法。但是提供了两个方法statsItems和statsCacheDump,通过statsitems可以获取memcache中有多少个item,每个item上有多少个key,而statsCacheDump可以获取每个item上各个key的信息(key的名称,大小,以及有效期)。
下面是它的api文档地址:
http://www.geelou.com/javadocs/java_memcached-release_2.0.1/com/danga/MemCached/package-summary.html
通过这个例子,我有这么一个问题。memcache存的值键值对,值可以是基本数据类型,也可以是对象类型。A客户端存了一个两个key,key1是String类型,key2是Object类型。那么B客户端怎么知道key1是String类型,key2是Object类型。(可以看一下set方法,对应的value都是Object)。说白了就是说如何区分key的数据类型?????好了问题先记在这里。下面还是贴一下取key的方法。
KeysBean定义的是一个javabean,总共三个属性:这里就不在赘述了。
private String server;
private long bytes;
private long expiry;
public static Map<String,KeysBean> getKeysForMap() throws UnsupportedEncodingException{
Map<String,KeysBean> keylist=new HashMap<String,KeysBean>();
//遍历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(URLDecoder.decode(statsCacheDumpsub_key, "UTF-8"), new KeysBean(server,Long.parseLong(statsCacheDumpsub_key_value.substring(1, statsCacheDumpsub_key_value.indexOf("b;")-1).trim()),Long.parseLong(statsCacheDumpsub_key_value.substring(statsCacheDumpsub_key_value.indexOf("b;")+2,statsCacheDumpsub_key_value.indexOf("s]")-1).trim())));
}
}
}
}
}
return keylist;
}
java MemCachedClient遍历memcache中所有的key的更多相关文章
- (转载)遍历memcache中已缓存的key
(转载)http://www.cnblogs.com/ainiaa/archive/2011/03/11/1981108.html 最近需要做一个缓存管理的功能.其中有一个需要模糊匹配memcache ...
- JS 遍历JSON中每个key值
JS 遍历JSON中的每个key值,可以按键值对进行存储: var myVar = { typeA: { option1: "one", option2: "two&qu ...
- 获取JSON中所有的KEY
采用递归的方式,遍历JSON中所有的KEY. JSON格式如下: {"username":"tom","age":18,"addr ...
- java map遍历、排序,根据value获取key
Map 四种遍历: Map<String,String> map = new HashMap<String, String>(); map.put("one" ...
- Java循环遍历中直接修改遍历对象
Java 循环遍历中直接修改遍历对象如下,会报异常: for (ShopBaseInfo sp: sourceList) { if(sp.getId()==5){ sourceList.remove( ...
- PAT-1086(Tree Traversals Again)Java语言实现+根据中序和前序遍历构建树并且给出后序遍历序列
Tree Traversals Again Tree Traversals Again 这里的第一个tip就是注意到非递归中序遍历的过程中,进栈的顺序恰好是前序遍历的顺序,而出栈的顺序恰好是中序遍历的 ...
- java编写二叉树以及前序遍历、中序遍历和后序遍历 .
/** * 实现二叉树的创建.前序遍历.中序遍历和后序遍历 **/ package DataStructure; /** * Copyright 2014 by Ruiqin Sun * All ri ...
- Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历
package com.example.demo; public class BTree { public int data; public BTree left; public BTree rigt ...
- Java Map遍历方式的选择
[原文] 1. 阐述 对于Java中Map的遍历方式,很多文章都推荐使用entrySet,认为其比keySet的效率高很多.理由是:entrySet方法一次拿到所有key和value的集合:而keyS ...
随机推荐
- CCF计算机认证注意事项
1,同一变量只使用一次,你是使用同名的局部变量. 2,if()条件语句里面再不要使用单一的if()条件语句. 这应该都是他们系统的bug
- [C++]unordered_map的使用
unordered_map和map类似,都是存储的key-value的值,可以通过key快速索引到value. 不同的是unordered_map不会根据key的大小进行排序,存储时是根据key的ha ...
- leetcode Remove Element python
class Solution(object): def removeElement(self, nums, val): """ :type nums: List[int] ...
- Linux学习之head命令
head 与 tail 就像它的名字一样的浅显易懂,它是用来显示开头或结尾某个数量的文字区块,head 用来显示档案的开头至标准输出中,而 tail 想当然尔就是看档案的结尾. 1.命令格式: hea ...
- Android 通过HTTPCLINET POST请求互联网数据
private EditText et; private TextView tv; HttpClient client; @Override protected void onCreate(Bundl ...
- silverlight imagesource赋值与转换
介绍几种常用的Image source 赋值方式: this.abc.Source = new BitmapImage(new Uri("/1.jpg", UriKind.Rela ...
- 供应类型与计划分类一致性检查(PO)
应用 Oracle Purchasing 层 Level Function 函数名 Funcgtion Name CUXPOIMM 表单名 Form Name CUXPOIMM 说明 Descri ...
- Ajax与C#应用详细实例
实现刷新的方法主要是Ajax,本文档实现Ajax有两个方法(Jquery 和 W3C的JS方法):其次,使用JS也可以实现刷新数据不刷新页面(详见其他刷新页面方法JS实现):对于CallbackRef ...
- [问题解决] ubuntu server12.04 认证的问题
错误: 今天无缘无故登录不了系统ubuntu server12.04. 在登录界面输入正确密码后,黑屏一闪后又跳转到登录界面. 黑屏出现的时间太短,经过多次查看发现,卡在check battery s ...
- HBase源代码分析
http://www.docin.com/p-647062205.html http://blog.csdn.net/luyee2010/article/category/1285622 http:/ ...