217 lines
5.4 KiB
Java
217 lines
5.4 KiB
Java
<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>
|