Memcached中获取所有的key

概要:

Memcached中获取所有的key

| |目录

/**
 * 获取服务器上面所有的key
 */
public static List<String> getAllKeys(MemCachedClient memCachedClient) {
	logger.info("开始获取服务器中所有的key.......");
	List<String> list = new ArrayList<String>();
	Map<String, Map<String, String>> items = memCachedClient.statsItems();
	for (Iterator<String> itemIt = items.keySet().iterator(); itemIt.hasNext();) {
		String itemKey = itemIt.next();
		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);
			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 = memCachedClient.statsCacheDump(slabNumber, limit);
				for (Iterator<String> dumpIt = dumpMaps.keySet().iterator(); dumpIt.hasNext();) {
					String dumpKey = dumpIt.next();
					Map<String, String> allMap = dumpMaps.get(dumpKey);
					for (Iterator<String> allIt = allMap.keySet().iterator(); allIt.hasNext();) {
						String allKey = allIt.next();
						list.add(allKey.trim());
					}
				}
			}
		}
	}
	logger.info("获取服务器中所有的key完成.......");
	return list;
}
评论关闭
评论 还能输入200
评论关闭
评论 还能输入200
资料加载中...
已关注 , 取消