Ver código fonte

update 优化 Redis缓存监控接口 手动归还连接给连接池 提高效率

疯狂的狮子Li 1 ano atrás
pai
commit
3f9919fbee

+ 8 - 4
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/controller/monitor/CacheController.java

@@ -6,6 +6,7 @@ import org.dromara.common.core.domain.R;
 import org.dromara.common.core.utils.StringUtils;
 import org.redisson.spring.data.connection.RedissonConnectionFactory;
 import org.springframework.data.redis.connection.RedisConnection;
+import org.springframework.data.redis.core.RedisConnectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
@@ -31,9 +32,9 @@ public class CacheController {
     @GetMapping()
     public R<CacheListInfoVo> getInfo() throws Exception {
         RedisConnection connection = connectionFactory.getConnection();
-        Properties commandStats = connection.commands().info("commandstats");
-
-        List<Map<String, String>> pieList = new ArrayList<>();
+        try {
+            Properties commandStats = connection.commands().info("commandstats");
+            List<Map<String, String>> pieList = new ArrayList<>();
         if (commandStats != null) {
             commandStats.stringPropertyNames().forEach(key -> {
                 Map<String, String> data = new HashMap<>(2);
@@ -43,10 +44,13 @@ public class CacheController {
                 pieList.add(data);
             });
         }
-
         return R.ok(new CacheListInfoVo(
             connection.commands().info(),
             connection.commands().dbSize(), pieList));
+        } finally {
+            // 归还连接给连接池
+            RedisConnectionUtils.releaseConnection(connection, connectionFactory);
+        }
     }
 
     public record CacheListInfoVo(Properties info, Long dbSize, List<Map<String, String>> commandStats) {}