SpringBoot整合RedisTemplate实现缓存信息监控
1、CacheController接口代码
@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 { // 获取redis缓存完整信息 //Properties info = redisTemplate.getRequiredConnectionFactory().getConnection().info(); Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info()); // 获取redis缓存命令统计信息 //Properties commandStats = redisTemplate.getRequiredConnectionFactory().getConnection().info("commandstats"); Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats")); // 获取redis缓存中可用键Key的总数 //Long dbSize = redisTemplate.getRequiredConnectionFactory().getConnection().dbSize(); 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); } }
没有停止的脚步,只有倒下去的脚步