package cn.lihu.jh.module.infra.controller.admin.redis; 
 | 
  
 | 
import cn.lihu.jh.framework.common.pojo.CommonResult; 
 | 
import cn.lihu.jh.module.infra.controller.admin.redis.vo.RedisMonitorRespVO; 
 | 
import cn.lihu.jh.module.infra.convert.redis.RedisConvert; 
 | 
import io.swagger.v3.oas.annotations.Operation; 
 | 
import io.swagger.v3.oas.annotations.tags.Tag; 
 | 
import org.springframework.data.redis.connection.RedisServerCommands; 
 | 
import org.springframework.data.redis.core.RedisCallback; 
 | 
import org.springframework.data.redis.core.StringRedisTemplate; 
 | 
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 javax.annotation.Resource; 
 | 
import java.util.Properties; 
 | 
  
 | 
import static cn.lihu.jh.framework.common.pojo.CommonResult.success; 
 | 
  
 | 
@Tag(name = "管理后台 - Redis 监控") 
 | 
@RestController 
 | 
@RequestMapping("/infra/redis") 
 | 
public class RedisController { 
 | 
  
 | 
    @Resource 
 | 
    private StringRedisTemplate stringRedisTemplate; 
 | 
  
 | 
    @GetMapping("/get-monitor-info") 
 | 
    @Operation(summary = "获得 Redis 监控信息") 
 | 
    @PreAuthorize("@ss.hasPermission('infra:redis:get-monitor-info')") 
 | 
    public CommonResult<RedisMonitorRespVO> getRedisMonitorInfo() { 
 | 
        // 获得 Redis 统计信息 
 | 
        Properties info = stringRedisTemplate.execute((RedisCallback<Properties>) RedisServerCommands::info); 
 | 
        Long dbSize = stringRedisTemplate.execute(RedisServerCommands::dbSize); 
 | 
        Properties commandStats = stringRedisTemplate.execute(( 
 | 
                RedisCallback<Properties>) connection -> connection.info("commandstats")); 
 | 
        assert commandStats != null; // 断言,避免警告 
 | 
        // 拼接结果返回 
 | 
        return success(RedisConvert.INSTANCE.build(info, dbSize, commandStats)); 
 | 
    } 
 | 
  
 | 
} 
 |