RuoYi-Vue 前后端分离版代码浅析-缓存监控

990 阅读1分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

本节介绍RuoYi-Vue的ruoyi-admin模块中的上传下载模块CacheController 部分的代码,这个接口主要用来展示Redis服务器的情况

服务器情况

使用redis的info命令可以直接将redis的各种信息和统计数值返回回来

Properties info = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info());

Redis命令统计

info命令中添加commandstats 可以让命令只返回一部分的信息

Properties commandStats = (Properties) redisTemplate.execute((RedisCallback<Object>) connection -> connection.info("commandstats"));

对返回的数据做了一次强转,目的是针对返回回来的命令进行一下,返回回来的数据格式是

cmdstat_XXX: calls=XXX,usec=XXX,usec_per_call=XXX

这个样子的 所以通过下面的代码对返回的数据进行了处理,放入了一个pie图表数组里。

        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);

DBSIZE

Redis中的 DBSIZE命令是用来 返回当前数据库中 key 的数量的。

Object dbSize = redisTemplate.execute((RedisCallback<Object>) connection -> connection.dbSize());

这个返回的是Object,但是上面的两个都将返回的强转为了Properties,因为这个只有一个数字,直接返回给前端就行。

前端使用到的信息

标题对应返回的变量名称
Redis版本cache.info.redis_version
端口cache.info.tcp_port
客户端数cache.info.connected_clients
运行时间(天)cache.info.uptime_in_days
使用CPUparseFloat(cache.info.used_cpu_user_children).toFixed(2)
内存配置cache.info.maxmemory_human
Key数量cache.info.maxmemory_human
内存配置cache.dbSize
网络入口/出口{{ cache.info.instantaneous_input_kbps }}kps/{{cache.info.instantaneous_output_kbps}}kps

本接口很简单,就是提供了个前端页面将一些信息反馈给网站所有者,主要是info命令和dbsize命令平时接触不到,可以作为Redis知识点记录下来。