You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
53 lines
2.1 KiB
53 lines
2.1 KiB
package com.ruoyi.web.controller.monitor; |
|
|
|
import java.util.ArrayList; |
|
import java.util.HashMap; |
|
import java.util.List; |
|
import java.util.Map; |
|
import java.util.Properties; |
|
import org.springframework.beans.factory.annotation.Autowired; |
|
import org.springframework.data.redis.core.RedisCallback; |
|
import org.springframework.data.redis.core.RedisTemplate; |
|
import org.springframework.security.access.prepost.PreAuthorize; |
|
import org.springframework.web.bind.annotation.GetMapping; |
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
import org.springframework.web.bind.annotation.RestController; |
|
import com.ruoyi.common.core.domain.AjaxResult; |
|
import com.ruoyi.common.utils.StringUtils; |
|
|
|
/** |
|
* 缓存监控 |
|
* |
|
* @author ruoyi |
|
*/ |
|
@RestController |
|
@RequestMapping("/monitor/cache") |
|
public class CacheController |
|
{ |
|
@Autowired |
|
private RedisTemplate<String, String> redisTemplate; |
|
|
|
@PreAuthorize("@ss.hasPermi('monitor:cache:list')") |
|
@GetMapping() |
|
public AjaxResult getInfo() throws Exception |
|
{ |
|
Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info()); |
|
Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats")); |
|
Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize()); |
|
|
|
Map<String, Object> result = new HashMap<>(3); |
|
result.put("info", info); |
|
result.put("dbSize", dbSize); |
|
|
|
List<Map<String, String>> pieList = new ArrayList<>(); |
|
commandStats.stringPropertyNames().forEach(key -> { |
|
Map<String, String> data = new HashMap<>(2); |
|
String property = commandStats.getProperty(key); |
|
data.put("name", StringUtils.removeStart(key, "cmdstat_")); |
|
data.put("value", StringUtils.substringBetween(property, "calls=", ",usec")); |
|
pieList.add(data); |
|
}); |
|
result.put("commandStats", pieList); |
|
return AjaxResult.success(result); |
|
} |
|
}
|
|
|