小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
前言
本节介绍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 |
使用CPU | parseFloat(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知识点记录下来。