发布网友 发布时间:2024-10-03 15:20
共1个回答
热心网友 时间:2024-10-28 16:48
前言本节介绍RuoYi-Vue的ruoyi-admin模块中的上传下载模块CacheController部分的代码,这个接口主要用来展示Redis服务器的情况。
服务器情况使用redis的info命令可以直接将redis的各种信息和统计数值返回回来
Propertiesinfo=(Properties)redisTemplate.execute((RedisCallback<Object>)connection->connection.info());Redis命令统计info命令中添加commandstats可以让命令只返回一部分的信息
PropertiescommandStats=(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=newArrayList<>();commandStats.stringPropertyNames().forEach(key->{Map<String,String>data=newHashMap<>(2);Stringproperty=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);DBSIZERedis中的DBSIZE命令是用来返回当前数据库中key的数量的。
ObjectdbSize=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_humanKey数量cache.info.maxmemory_human内存配置cache.dbSize网络入口/出口{{cache.info.instantaneous_input_kbps}}kps/{{cache.info.instantaneous_output_kbps}}kps本接口很简单,就是提供了个前端页面将一些信息反馈给网站所有者,主要是info命令和dbsize命令平时接触不到,可以作为Redis知识点记录下来。