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

217 lines
5.4 KiB
Java
Raw Normal View History

2019-04-14 16:20:04 +08:00
<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>