Authored by qinchao

redis查询的数据源从cmdb获取

package com.monitor.other.redisOperate.constant;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;
import java.util.Set;
/**
* Created by craig.qin on 2017/7/11.
*/
public enum EnumRedisInfo {
/** TEST*/
//TEST("TEST_01", "192.168.103.93",16379,"TEST","SYNC"),
//TEST_ASY("TEST_02", "192.168.103.94",16379,"TEST","ASY"),
/** aws 同步 */
//AWS_REDIS_SYNC_01("AWS_REDIS_SYNC_01", "172.31.57.109",16379,"AWS","同步"),
//AWS_REDIS_SYNC_02("AWS_REDIS_SYNC_02", "172.31.57.117",16379,"AWS","同步"),
AWS_REDIS_SYNC_03("AWS_REDIS_SYNC_03", "172.31.57.113",6379,"AWS","同步"),
AWS_REDIS_SYNC_04("AWS_REDIS_SYNC_04", "172.31.57.112",6379,"AWS","同步"),
/** aws 不同步 */
AWS_REDIS_ASY_01("AWS_REDIS_ASY_01", "172.31.20.183",63790,"AWS","不同步"),
AWS_REDIS_ASY_02("AWS_REDIS_ASY_02", "172.31.20.182",63790,"AWS","不同步"),
//AWS_REDIS_ASY_03("AWS_REDIS_ASY_03", "172.31.20.172",16379,"AWS","不同步"),
//AWS_REDIS_ASY_04("AWS_REDIS_ASY_04", "172.31.20.173",16379,"AWS","不同步"),
/** qq 同步 */
//QQ_REDIS_SYNC_01("QQ_REDIS_SYNC_01", "10.66.0.176",16379,"QCLOUD","同步"),
//QQ_REDIS_SYNC_02("QQ_REDIS_SYNC_02", "10.66.0.102",16379,"QCLOUD","同步"),
QQ_REDIS_SYNC_03("QQ_REDIS_SYNC_03", "10.66.0.175",6379,"QCLOUD","同步"),
QQ_REDIS_SYNC_04("QQ_REDIS_SYNC_04", "10.66.0.216",6379,"QCLOUD","同步"),
/** QQ 不同步 */
QQ_REDIS_ASY_01("QQ_REDIS_ASY_01", "10.66.0.43",63790,"QCLOUD","不同步"),
QQ_REDIS_ASY_02("QQ_REDIS_ASY_02", "10.66.0.91",63790,"QCLOUD","不同步"),
//QQ_REDIS_ASY_01("QQ_REDIS_ASY_01", "10.66.0.65",16379,"QCLOUD","不同步"),
//QQ_REDIS_ASY_02("QQ_REDIS_ASY_02", "10.66.0.48",16379,"QCLOUD","不同步"),
//QQ_REDIS_ASY_03("QQ_REDIS_ASY_03", "10.66.0.38",16379,"QCLOUD","不同步"),
//QQ_REDIS_ASY_04("QQ_REDIS_ASY_04", "10.66.0.212",16379,"QCLOUD","不同步")
/** 大数据 */
BIGDATA_REDIS_01("BIGDATA_REDIS_01", "172.31.57.38",6379,"大数据",""),
BIGDATA_REDIS_02("BIGDATA_REDIS_02", "172.31.57.184",6379,"大数据",""),
;
// 成员变量
private String id;
private String ip;
private int port;
private String center;
private String syncOrAsy;
private String centerSyncAndCenterAsy;
// 构造方法
private EnumRedisInfo(String id, String ip,int port,String center ,String syncOrAsy) {
this.id = id;
this.ip = ip;
this.port=port;
this.center=center;
this.syncOrAsy=syncOrAsy;
this.centerSyncAndCenterAsy=center+"-"+syncOrAsy;
}
public static String getIp(EnumRedisInfo redis){
return redis.ip;
}
public static int getPort(EnumRedisInfo redis){
return redis.port;
}
public static EnumRedisInfo getEnumRedisInfoByID(String id){
for(EnumRedisInfo info :EnumRedisInfo.values()){
if(info.id.equals(id)){
return info;
}
}
return null;
}
public static Map<String,List<Map<String,String>>> getALLCenterSyncAndCenterAsy(){
Map<String,List<Map<String,String>>> map= Maps.newLinkedHashMap();
for(EnumRedisInfo info :EnumRedisInfo.values()){
if(map.keySet().contains(info.centerSyncAndCenterAsy)){
Map<String,String> tmp_map=Maps.newHashMap();
tmp_map.put("id",info.id);
tmp_map.put("ip",info.ip);
map.get(info.centerSyncAndCenterAsy).add(tmp_map);
}else{
List<Map<String,String>> infos=Lists.newArrayList();
Map<String,String> tmp_map=Maps.newHashMap();
tmp_map.put("id",info.id);
tmp_map.put("ip",info.ip);
infos.add(tmp_map);
map.put(info.centerSyncAndCenterAsy,infos);
}
}
return map;
}
/* public static void main(String[] args){
Map<String,List<EnumRedisInfo>> map= Maps.newLinkedHashMap();
for(EnumRedisInfo info :EnumRedisInfo.values()){
if(map.keySet().contains(info.centerSyncAndCenterAsy)){
map.get(info.centerSyncAndCenterAsy).add(info);
}else{
List<EnumRedisInfo> infos=Lists.newArrayList();
infos.add(info);
map.put(info.centerSyncAndCenterAsy, infos);
}
}
System.out.println(map);
}*/
//覆盖方法
@Override
public String toString() {
return this.id+"_"+this.ip+"_"+this.port+"_"+this.center+"_"+this.syncOrAsy;
}
}
... ... @@ -2,7 +2,6 @@ package com.monitor.other.redisOperate.ctrl;
import com.monitor.model.domain.RedisOperateModel;
import com.monitor.model.response.BaseResponse;
import com.monitor.other.redisOperate.constant.EnumRedisInfo;
import com.monitor.other.redisOperate.service.RedisOperateService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
... ... @@ -29,18 +28,6 @@ public class RedisOperateCtrl {
@RequestMapping("/queryRedisList")
@ResponseBody
public BaseResponse queryRedisList(){
Map<String,List<Map<String,String>>> map= EnumRedisInfo.getALLCenterSyncAndCenterAsy();
BaseResponse response=new BaseResponse();
response.setData(map);
return response;
}
/*
查询redis源
*/
@RequestMapping("/queryRedisList2")
@ResponseBody
public BaseResponse queryRedisList2(){
Map<String,List<Map<String,String>>> map= redisOperateService.queryHostFromMobjects();
BaseResponse response=new BaseResponse();
response.setData(map);
... ...
... ... @@ -9,7 +9,6 @@ import com.monitor.common.util.RedisCommonUtil;
import com.monitor.model.domain.RedisOperateModel;
import com.monitor.model.response.BaseResponse;
import com.monitor.mysql.mapper.MTypeInfoMapper;
import com.monitor.other.redisOperate.constant.EnumRedisInfo;
import com.monitor.other.redisOperate.service.RedisOperateService;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
... ... @@ -111,11 +110,14 @@ public class RedisOperateServiceImpl implements RedisOperateService {
BaseResponse response=null;
String cmd=redisOperateModel.getCmdContent();
int selectIndex=redisOperateModel.getSelectIndex();
EnumRedisInfo redis=EnumRedisInfo.getEnumRedisInfoByID(redisOperateModel.getDataSourceInfo());
if(redis==null|| StringUtils.isBlank(cmd)){
response=new BaseResponse("参数错误:redis源不存在或者查询命令为空");
String[] ipAndPort=redisOperateModel.getDataSourceInfo().split(":");
if(ipAndPort==null|| ipAndPort.length!=2||StringUtils.isBlank(cmd)){
response=new BaseResponse("参数错误:redis源"+redisOperateModel.getDataSourceInfo()+"不存在或者查询命令为空");
return response;
}
String ip=ipAndPort[0];
int port=Integer.parseInt(ipAndPort[1]);
Map<String,String> rtnMap =null;
/*if(cmd.toLowerCase().startsWith("select ")){
... ... @@ -125,7 +127,7 @@ public class RedisOperateServiceImpl implements RedisOperateService {
rtnMap =RedisCommonUtil.cmd_keys(EnumRedisInfo.getIp(redis), EnumRedisInfo.getPort(redis), selectIndex, keyPattern);
}else*/ if(cmd.toLowerCase().startsWith("get ")){
String key=cmd.substring(4).trim();
rtnMap =RedisCommonUtil.cmd_get(EnumRedisInfo.getIp(redis), EnumRedisInfo.getPort(redis), selectIndex, key);
rtnMap =RedisCommonUtil.cmd_get(ip, port, selectIndex, key);
}else if(cmd.toLowerCase().startsWith("hget ")){
String keyStr=cmd.substring(4).trim();
String key="";
... ... @@ -149,7 +151,7 @@ public class RedisOperateServiceImpl implements RedisOperateService {
}
}
}
rtnMap =RedisCommonUtil.cmd_hget(EnumRedisInfo.getIp(redis), EnumRedisInfo.getPort(redis), selectIndex, key, field);
rtnMap =RedisCommonUtil.cmd_hget(ip, port, selectIndex, key, field);
}else if(cmd.toLowerCase().startsWith("lrange ")){
String keyStr=cmd.substring(7).trim();
String[] keysParam=keyStr.split(" ");
... ... @@ -179,10 +181,10 @@ public class RedisOperateServiceImpl implements RedisOperateService {
}
}
}
rtnMap =RedisCommonUtil.cmd_lrange(EnumRedisInfo.getIp(redis), EnumRedisInfo.getPort(redis), selectIndex, key, beginIndex, endIndex);
rtnMap =RedisCommonUtil.cmd_lrange(ip, port, selectIndex, key, beginIndex, endIndex);
}else if(cmd.toLowerCase().startsWith("smembers ")){
String key=cmd.substring(9).trim();
rtnMap =RedisCommonUtil.cmd_smembers(EnumRedisInfo.getIp(redis), EnumRedisInfo.getPort(redis), selectIndex, key);
rtnMap =RedisCommonUtil.cmd_smembers(ip, port, selectIndex, key);
}else if(cmd.toLowerCase().startsWith("hmget ")){
String keyParam=cmd.substring(6).trim();
String[] keys=keyParam.split(" ");
... ... @@ -202,7 +204,7 @@ public class RedisOperateServiceImpl implements RedisOperateService {
ls.add(str);
}
}
rtnMap =RedisCommonUtil.cmd_hmget(EnumRedisInfo.getIp(redis), EnumRedisInfo.getPort(redis), selectIndex, key, ls.toArray(new String[ls.size()]));
rtnMap =RedisCommonUtil.cmd_hmget(ip, port, selectIndex, key, ls.toArray(new String[ls.size()]));
}else{
response=new BaseResponse("参数错误:命令不被支持:"+cmd);
return response;
... ...