转jlchen java获取memcached所有key

public class Telnet {
    public static void main(String args[]) {
        String[] keys = allkeys("localhost", 11211).split(" ");
        Arrays.sort(keys);
        for(String s : keys){
            System.out.println(s);
        }
        System.out.println(telnet("localhost", 11211, "stats"));
    }
    public static String allkeys(String host, int port){
        StringBuffer r = new StringBuffer();
        try {
            Socket socket = new Socket(host, port);
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            BufferedReader is = new BufferedReader(new InputStreamReader( socket.getInputStream()));
            os.println("stats items");
            os.flush();
            String l ;
            while (!(l = is.readLine()).equals("END")) {
                r.append(l).append(" ");
            }
            String rr = r.toString();
            Set<String> ids = new HashSet<String>();
            if(rr.length() > 0){
                r = new StringBuffer();//items
                rr.replace("STAT items", "");
                for(String s : rr.split(" ")){
                    ids.add(s.split(":")[1]);
                }
                if (ids.size() > 0){
                    r = new StringBuffer();//
                    for(String s : ids){
                        os.println("stats cachedump "+ s +" 0");
                        os.flush();
                        while (!(l = is.readLine()).equals("END")) {
                            r.append(l.split(" ")[1]).append(" ");
                        }
                    }
                }
            }
             
            os.close();
            is.close();
            socket.close();
        } catch (Exception e) {
            System.out.println("Error" + e);
        }
        return r.toString();
    }
    public static String telnet(String host, int port, String cmd){
        StringBuffer r = new StringBuffer();
        try {
            Socket socket = new Socket(host, port);
            PrintWriter os = new PrintWriter(socket.getOutputStream());
            BufferedReader is = new BufferedReader(new InputStreamReader( socket.getInputStream()));
            os.println(cmd);
            os.flush();
            String l ;
            while (!(l = is.readLine()).equals("END")) {
                r.append(l).append(" ");
            }
            os.close();
            is.close();
            socket.close();
        } catch (Exception e) {
            System.out.println("Error" + e);
        }
        return r.toString();
    }
     
}
原文地址:https://www.cnblogs.com/xsht/p/5407486.html