7d8a5756ba48bc45315ec4b3b72d78162ee095d1.svn-base 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122
  1. package org.jeecg.modules.monitor.service.impl;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.Map;
  6. import java.util.Properties;
  7. import javax.annotation.Resource;
  8. import cn.hutool.core.date.DateUtil;
  9. import com.alibaba.fastjson.JSONArray;
  10. import com.alibaba.fastjson.JSONObject;
  11. import com.google.common.collect.Maps;
  12. import org.jeecg.common.util.oConvertUtils;
  13. import org.jeecg.modules.monitor.domain.RedisInfo;
  14. import org.jeecg.modules.monitor.exception.RedisConnectException;
  15. import org.jeecg.modules.monitor.service.RedisService;
  16. import org.springframework.cglib.beans.BeanMap;
  17. import org.springframework.data.redis.connection.RedisConnectionFactory;
  18. import org.springframework.stereotype.Service;
  19. import lombok.extern.slf4j.Slf4j;
  20. /**
  21. * Redis 监控信息获取
  22. *
  23. * @Author MrBird
  24. */
  25. @Service("redisService")
  26. @Slf4j
  27. public class RedisServiceImpl implements RedisService {
  28. @Resource
  29. private RedisConnectionFactory redisConnectionFactory;
  30. /**
  31. * Redis详细信息
  32. */
  33. @Override
  34. public List<RedisInfo> getRedisInfo() throws RedisConnectException {
  35. Properties info = redisConnectionFactory.getConnection().info();
  36. List<RedisInfo> infoList = new ArrayList<>();
  37. RedisInfo redisInfo = null;
  38. for (Map.Entry<Object, Object> entry : info.entrySet()) {
  39. redisInfo = new RedisInfo();
  40. redisInfo.setKey(oConvertUtils.getString(entry.getKey()));
  41. redisInfo.setValue(oConvertUtils.getString(entry.getValue()));
  42. infoList.add(redisInfo);
  43. }
  44. return infoList;
  45. }
  46. @Override
  47. public Map<String, Object> getKeysSize() throws RedisConnectException {
  48. Long dbSize = redisConnectionFactory.getConnection().dbSize();
  49. Map<String, Object> map = new HashMap<>();
  50. map.put("create_time", System.currentTimeMillis());
  51. map.put("dbSize", dbSize);
  52. log.info("--getKeysSize--: " + map.toString());
  53. return map;
  54. }
  55. @Override
  56. public Map<String, Object> getMemoryInfo() throws RedisConnectException {
  57. Map<String, Object> map = null;
  58. Properties info = redisConnectionFactory.getConnection().info();
  59. for (Map.Entry<Object, Object> entry : info.entrySet()) {
  60. String key = oConvertUtils.getString(entry.getKey());
  61. if ("used_memory".equals(key)) {
  62. map = new HashMap<>();
  63. map.put("used_memory", entry.getValue());
  64. map.put("create_time", System.currentTimeMillis());
  65. }
  66. }
  67. log.info("--getMemoryInfo--: " + map.toString());
  68. return map;
  69. }
  70. /**
  71. * 查询redis信息for报表
  72. * @param type 1redis key数量 2 占用内存 3redis信息
  73. * @return
  74. * @throws RedisConnectException
  75. */
  76. @Override
  77. public Map<String, JSONArray> getMapForReport(String type) throws RedisConnectException {
  78. Map<String,JSONArray> mapJson=new HashMap<String, JSONArray> ();
  79. JSONArray json = new JSONArray();
  80. if("3".equals(type)){
  81. List<RedisInfo> redisInfo = getRedisInfo();
  82. for(RedisInfo info:redisInfo){
  83. Map<String, Object> map= Maps.newHashMap();
  84. BeanMap beanMap = BeanMap.create(info);
  85. for (Object key : beanMap.keySet()) {
  86. map.put(key+"", beanMap.get(key));
  87. }
  88. json.add(map);
  89. }
  90. mapJson.put("data",json);
  91. return mapJson;
  92. }
  93. for(int i = 0; i < 5; i++){
  94. JSONObject jo = new JSONObject();
  95. Map<String, Object> map;
  96. if("1".equals(type)){
  97. map= getKeysSize();
  98. jo.put("value",map.get("dbSize"));
  99. }else{
  100. map = getMemoryInfo();
  101. Integer used_memory = Integer.valueOf(map.get("used_memory").toString());
  102. jo.put("value",used_memory/1000);
  103. }
  104. String create_time = DateUtil.formatTime(DateUtil.date((Long) map.get("create_time")-(4-i)*1000));
  105. jo.put("name",create_time);
  106. json.add(jo);
  107. }
  108. mapJson.put("data",json);
  109. return mapJson;
  110. }
  111. }