查看:3455|回复:0
Java获取Memcached所有KEY的工具类发表时间:2014-04-03 18:57:57

cndszj

0分享0主题0帖子

学徒一级

(初出茅庐)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
package com.dsyjs.helper;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.io.FileWriter;
import java.io.IOException;
import java.net.URLDecoder;
import com.meetup.memcached.MemcachedClient;
import com.meetup.memcached.SockIOPool;
public class MemCachedClientsHelper {
   private static MemcachedClient mcc = new MemcachedClient();
   static {
       String[] servers = { "127.0.0.1:11211" };
       Integer[] weights = { 3 };
       SockIOPool pool = SockIOPool.getInstance();
       pool.setServers(servers);
       pool.setWeights(weights);
       pool.setInitConn(5);
       pool.setMinConn(5);
       pool.setMaxConn(255);
       pool.setMaxIdle(1000 * 60 * 60 * 6);
       pool.setMaintSleep(30);
       pool.setSocketTO(3000);
       pool.setSocketConnectTO(0);
       pool.initialize();
   }
   public static void setVal(String key, String val) {
       System.out.println(key);
       mcc.add(key, val);
   }
   public static void main(String[] args) throws Throwable {
       mcc.flushAll();
       List<String> list = MemCachedClientsHelper.getAllKeys();
       System.out.println(list.size());
       for (String str : list) {
       //  System.out.println(URLDecoder.decode(str, "UTF-8"));
           mcc.delete(str);
           mcc.delete(URLDecoder.decode(str, "UTF-8"));
           // System.out.println(str);
       }
   }
   /**
    * 获取某台memcached的所有key
    *
    * @param memcachedNo
    * @return
    * @throws IOException
    */
   public static List<String> getAllKeys() throws Throwable {
       List<String> list = new ArrayList<String>();
       Map<String, Map<String, String>> items = mcc.statsItems();
       for (Iterator<String> itemIt = items.keySet().iterator(); itemIt.hasNext();) {
           String itemKey = itemIt.next();
           // System.out.println("----------------------------");
           // System.out.println("items:" + itemKey);//items:127.0.0.1:11211
           // System.out.println("============================");
           Map<String, String> maps = items.get(itemKey);
           for (Iterator<String> mapsIt = maps.keySet().iterator(); mapsIt.hasNext();) {
               String mapsKey = mapsIt.next();
               String mapsValue = maps.get(mapsKey);
               // System.out.println("----------------------------");
               //System.out.println("maps:" + mapsKey);// items:15:number
               //System.out.println("mapsv:" + mapsValue);// 50
               // System.out.println("============================");
               if (mapsKey.endsWith("number")) {// memcached key 类型// item_str:integer:number_str
                   String[] arr = mapsKey.split(":");
                   int slabNumber = Integer.valueOf(arr[1].trim());
                   int limit = Integer.valueOf(mapsValue.trim());
                   Map<String, Map<String, String>> dumpMaps = mcc.statsCacheDump(slabNumber, limit);
                   for (Iterator<String> dumpIt = dumpMaps.keySet().iterator(); dumpIt.hasNext();) {
                       String dumpKey = dumpIt.next();
                       // System.out.println("----------------------------");
                       // System.out.println("dumpMaps:" +
                       // dumpKey);//127.0.0.1:11211
                       // System.out.println("============================");
                       Map<String, String> allMap = dumpMaps.get(dumpKey);
                       for (Iterator<String> allIt = allMap.keySet().iterator(); allIt.hasNext();) {
                           String allKey = allIt.next();
                           list.add(allKey.trim());
                       }
                   }
               }
           }
       }
       return list;
   }
}


您需要登录以后才可以回帖    登录|注册