| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | package org.jeecg.modules.monitor.service.impl;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Properties;import javax.annotation.Resource;import cn.hutool.core.date.DateUtil;import com.alibaba.fastjson.JSONArray;import com.alibaba.fastjson.JSONObject;import com.google.common.collect.Maps;import org.jeecg.common.util.oConvertUtils;import org.jeecg.modules.monitor.domain.RedisInfo;import org.jeecg.modules.monitor.exception.RedisConnectException;import org.jeecg.modules.monitor.service.RedisService;import org.springframework.cglib.beans.BeanMap;import org.springframework.data.redis.connection.RedisConnectionFactory;import org.springframework.stereotype.Service;import lombok.extern.slf4j.Slf4j;/** * Redis 监控信息获取 * * @Author MrBird */@Service("redisService")@Slf4jpublic class RedisServiceImpl implements RedisService {	@Resource	private RedisConnectionFactory redisConnectionFactory;	/**	 * Redis详细信息	 */	@Override	public List<RedisInfo> getRedisInfo() throws RedisConnectException {		Properties info = redisConnectionFactory.getConnection().info();		List<RedisInfo> infoList = new ArrayList<>();		RedisInfo redisInfo = null;		for (Map.Entry<Object, Object> entry : info.entrySet()) {			redisInfo = new RedisInfo();			redisInfo.setKey(oConvertUtils.getString(entry.getKey()));			redisInfo.setValue(oConvertUtils.getString(entry.getValue()));			infoList.add(redisInfo);		}		return infoList;	}	@Override	public Map<String, Object> getKeysSize() throws RedisConnectException {		Long dbSize = redisConnectionFactory.getConnection().dbSize();		Map<String, Object> map = new HashMap<>();		map.put("create_time", System.currentTimeMillis());		map.put("dbSize", dbSize);		log.info("--getKeysSize--: " + map.toString());		return map;	}	@Override	public Map<String, Object> getMemoryInfo() throws RedisConnectException {		Map<String, Object> map = null;		Properties info = redisConnectionFactory.getConnection().info();		for (Map.Entry<Object, Object> entry : info.entrySet()) {			String key = oConvertUtils.getString(entry.getKey());			if ("used_memory".equals(key)) {				map = new HashMap<>();				map.put("used_memory", entry.getValue());				map.put("create_time", System.currentTimeMillis());			}		}		log.info("--getMemoryInfo--: " + map.toString());		return map;	}    /**     * 查询redis信息for报表     * @param type 1redis key数量 2 占用内存 3redis信息     * @return     * @throws RedisConnectException     */	@Override	public Map<String, JSONArray> getMapForReport(String type)  throws RedisConnectException {		Map<String,JSONArray> mapJson=new HashMap<String, JSONArray> ();		JSONArray json = new JSONArray();		if("3".equals(type)){			List<RedisInfo> redisInfo = getRedisInfo();			for(RedisInfo info:redisInfo){				Map<String, Object> map= Maps.newHashMap();				BeanMap beanMap = BeanMap.create(info);				for (Object key : beanMap.keySet()) {					map.put(key+"", beanMap.get(key));				}				json.add(map);			}			mapJson.put("data",json);			return mapJson;		}		for(int i = 0; i < 5; i++){			JSONObject jo = new JSONObject();			Map<String, Object> map;			if("1".equals(type)){				map= getKeysSize();				jo.put("value",map.get("dbSize"));			}else{				map = getMemoryInfo();				Integer used_memory = Integer.valueOf(map.get("used_memory").toString());				jo.put("value",used_memory/1000);			}			String create_time = DateUtil.formatTime(DateUtil.date((Long) map.get("create_time")-(4-i)*1000));			jo.put("name",create_time);			json.add(jo);		}		mapJson.put("data",json);		return mapJson;	}}
 |