dbsd_kczx_java/ant-design-jeecg-vue/src/views/monitor/RedisInfo.vue

217 lines
5.4 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div style="width: 100%;margin-top: 1rem;background-color: #ffffff">
<a-row :gutter="8">
<a-col :span="12">
<apexchart ref="memoryInfo" type=area height=350 :options="memory.chartOptions" :series="memory.series" />
</a-col>
<a-col :span="12">
<apexchart ref="keySize" type=area height=350 :options="key.chartOptions" :series="key.series" />
</a-col>
</a-row>
<a-row :gutter="8">
<a-divider orientation="left">Redis详细信息</a-divider>
<table style="border-bottom: 1px solid #f1f1f1;">
<tr v-for="(info, index) in redisInfo" :key="index" style="border-top: 1px solid #f1f1f1;">
<td style="padding: .7rem 1rem">{{info.key}}</td>
<td style="padding: .7rem 1rem">{{info.description}}</td>
<td style="padding: .7rem 1rem">{{info.value}}</td>
</tr>
</table>
</a-row>
</div>
</template>
<script>
import axios from 'axios'
import moment from 'moment'
import {getAction} from '@/api/manage'
export default {
name: 'RedisInfo',
data () {
return {
loading: true,
memory: {
series: [],
chartOptions: {
chart: {
animations: {
enabled: true,
easing: 'linear',
dynamicAnimation: {
speed: 3000
}
},
toolbar: {
show: false
},
zoom: {
enabled: false
}
},
dataLabels: {
enabled: false
},
stroke: {
curve: 'smooth'
},
title: {
text: 'Redis内存实时占用情况kb',
align: 'left'
},
markers: {
size: 0
},
xaxis: {
},
yaxis: {},
legend: {
show: false
}
},
data: [],
xdata: []
},
key: {
series: [],
chartOptions: {
chart: {
animations: {
enabled: true,
easing: 'linear',
dynamicAnimation: {
speed: 3000
}
},
toolbar: {
show: false
},
zoom: {
enabled: false
}
},
dataLabels: {
enabled: false
},
colors: ['#f5564e'],
stroke: {
curve: 'smooth'
},
title: {
text: 'Redis key实时数量',
align: 'left'
},
markers: {
size: 0
},
xaxis: {
},
yaxis: {},
legend: {
show: false
}
},
data: [],
xdata: []
},
redisInfo: [],
timer: null
}
},
beforeDestroy () {
if (this.timer) {
clearInterval(this.timer)
}
},
mounted () {
let minMemory = 1e10
let minSize = 1e10
let maxMemory = -1e10
let maxSize = -1e10
this.timer = setInterval(() => {
if (this.$route.path.indexOf('redis') !== -1) {
axios.all([
getAction('redis/keysSize'),
getAction('redis/memoryInfo')
]).then((r) => {
console.log(r)
let currentMemory = r[1].used_memory / 1000
let currentSize = r[0].dbSize
if (currentMemory < minMemory) {
minMemory = currentMemory
}
if (currentMemory > maxMemory) {
maxMemory = currentMemory
}
if (currentSize < minSize) {
minSize = currentSize
}
if (currentSize > maxSize) {
maxSize = currentSize
}
let time = moment().format('hh:mm:ss')
this.memory.data.push(currentMemory)
this.memory.xdata.push(time)
this.key.data.push(currentSize)
this.key.xdata.push(time)
if (this.memory.data.length >= 6) {
this.memory.data.shift()
this.memory.xdata.shift()
}
if (this.key.data.length >= 6) {
this.key.data.shift()
this.key.xdata.shift()
}
this.$refs.memoryInfo.updateSeries([
{
name: '内存(kb)',
data: this.memory.data.slice()
}
])
this.$refs.memoryInfo.updateOptions({
xaxis: {
categories: this.memory.xdata.slice()
},
yaxis: {
min: minMemory,
max: maxMemory
}
}, true, true)
this.$refs.keySize.updateSeries([
{
name: 'key数量',
data: this.key.data.slice()
}
])
this.$refs.keySize.updateOptions({
xaxis: {
categories: this.key.xdata.slice()
},
yaxis: {
min: minSize - 2,
max: maxSize + 2
}
}, true, true)
if (this.loading) {
this.loading = false
}
}).catch((r) => {
console.error(r)
this.$message.error('获取Redis信息失败')
if (this.timer) {
clearInterval(this.timer)
}
})
}
}, 3000)
getAction('redis/info').then((r) => {
console.log('redis/info')
console.log(r)
this.redisInfo = r.result
})
}
}
</script>
<style>
</style>