Skip to content

Commit c18ed6b

Browse files
YunaiVgitee-org
authored andcommitted
!211 Redis 监控添加缓存列表
Merge pull request !211 from 圆梦巨人/feature/cache-list
2 parents 6809146 + 67ff14c commit c18ed6b

File tree

2 files changed

+188
-12
lines changed

2 files changed

+188
-12
lines changed

src/api/infra/redis.js

Lines changed: 26 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,35 @@ export function getCache() {
88
})
99
}
1010

11-
// TODO
11+
// 获取模块
1212
export function getKeyList() {
1313
return request({
1414
url: '/infra/redis/get-key-list',
1515
method: 'get'
1616
})
1717
}
18+
19+
// 获取键名列表
20+
export function getKeyDefines(keyDefine) {
21+
return request({
22+
url: '/infra/redis/get-key-Defines?keyDefine=' + keyDefine,
23+
method: 'get'
24+
})
25+
}
26+
27+
// 获取缓存内容
28+
export function getKeyValue(keyDefine, key) {
29+
return request({
30+
url: '/infra/redis/get-key-value?keyDefine=' + keyDefine + "&cacheKey=" + key,
31+
method: 'get'
32+
})
33+
}
34+
35+
// 根据键名删除缓存
36+
export function deleteKeyValue(key) {
37+
return request({
38+
url: '/infra/redis/delete-key-value?cacheKey=' + key,
39+
method: 'delete'
40+
})
41+
}
42+

src/views/infra/redis/index.vue

Lines changed: 162 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -67,32 +67,133 @@
6767
</el-row>
6868

6969
<el-table
70-
v-loading="keyListLoad"
71-
:data="keyList"
72-
row-key="id"
70+
v-loading="keyListLoad"
71+
:data="keyList"
72+
row-key="id"
73+
@row-click="openCacheInfo"
7374
>
7475
<el-table-column prop="keyTemplate" label="Key 模板" width="200" />
7576
<el-table-column prop="keyType" label="Key 类型" width="100" />
7677
<el-table-column prop="valueType" label="Value 类型" />
7778
<el-table-column prop="timeoutType" label="超时时间" width="200">
7879
<template slot-scope="scope">
79-
<dict-tag :type="DICT_TYPE.INFRA_REDIS_TIMEOUT_TYPE" :value="scope.row.timeoutType" />
80-
<span v-if="scope.row.timeout > 0">({{ scope.row.timeout / 1000 }} 秒)</span>
80+
<dict-tag
81+
:type="DICT_TYPE.INFRA_REDIS_TIMEOUT_TYPE"
82+
:value="scope.row.timeoutType"
83+
/>
84+
<span v-if="scope.row.timeout > 0"
85+
>({{ scope.row.timeout / 1000 }} 秒)</span
86+
>
8187
</template>
8288
</el-table-column>
8389
<el-table-column prop="memo" label="备注" />
8490
</el-table>
85-
</div>
8691

92+
<!-- 缓存模块信息框 -->
93+
<el-dialog
94+
:title="keyTemplate + '模块'"
95+
:visible.sync="open"
96+
width="60vw"
97+
append-to-body
98+
>
99+
<el-row :gutter="10">
100+
<el-col :span="10" class="card-box">
101+
<el-card style="height: 70vh">
102+
<div slot="header">
103+
<span>键名列表</span>
104+
<el-button
105+
style="float: right; padding: 3px 0"
106+
type="text"
107+
icon="el-icon-refresh-right"
108+
@click="refreshCacheKeys"
109+
></el-button>
110+
</div>
111+
<el-table
112+
:data="cachekeys"
113+
style="width: 100%"
114+
@row-click="handleCacheValue"
115+
>
116+
<el-table-column
117+
label="序号"
118+
width="60"
119+
type="index"
120+
></el-table-column>
121+
<el-table-column
122+
label="缓存键名"
123+
align="center"
124+
:show-overflow-tooltip="true"
125+
:formatter="keyFormatter"
126+
>
127+
</el-table-column>
128+
<el-table-column
129+
label="操作"
130+
width="60"
131+
align="center"
132+
class-name="small-padding fixed-width"
133+
>
134+
<template slot-scope="scope">
135+
<el-button
136+
size="mini"
137+
type="text"
138+
icon="el-icon-delete"
139+
@click="handleClearCacheKey(scope.row)"
140+
></el-button>
141+
</template>
142+
</el-table-column>
143+
</el-table>
144+
</el-card>
145+
</el-col>
146+
147+
<el-col :span="14">
148+
<el-card :bordered="false" style="height: 70vh">
149+
<div slot="header">
150+
<span>缓存内容</span>
151+
<!-- <el-button
152+
style="float: right; padding: 3px 0"
153+
type="text"
154+
icon="el-icon-refresh-right"
155+
@click="handleClearCacheAll()"
156+
>清理全部</el-button>
157+
-->
158+
</div>
159+
<el-form :model="cacheForm">
160+
<el-row :gutter="32">
161+
<el-col :offset="1" :span="22">
162+
<el-form-item label="缓存名称:" prop="keyTemplate">
163+
<el-input v-model="cacheForm.keyTemplate" :readOnly="true" />
164+
</el-form-item>
165+
</el-col>
166+
<el-col :offset="1" :span="22">
167+
<el-form-item label="缓存键名:" prop="key">
168+
<el-input v-model="cacheForm.key" :readOnly="true" />
169+
</el-form-item>
170+
</el-col>
171+
<el-col :offset="1" :span="22">
172+
<el-form-item label="缓存内容:" prop="value">
173+
<el-input
174+
v-model="cacheForm.value"
175+
type="textarea"
176+
:rows="12"
177+
:readOnly="true"
178+
/>
179+
</el-form-item>
180+
</el-col>
181+
</el-row>
182+
</el-form>
183+
</el-card>
184+
</el-col>
185+
</el-row>
186+
</el-dialog>
187+
</div>
87188
</template>
88189

89190
<script>
90-
import { getCache, getKeyList } from "@/api/infra/redis";
191+
import { getCache, getKeyList, getKeyDefines, getKeyValue, deleteKeyValue } from "@/api/infra/redis";
91192
import echarts from "echarts";
92193
93194
export default {
94195
name: "Server",
95-
data() {
196+
data () {
96197
return {
97198
// 统计命令信息
98199
commandstats: null,
@@ -103,15 +204,20 @@ export default {
103204
// key 列表
104205
keyListLoad: true,
105206
keyList: [],
207+
// 模块弹出框
208+
open: false,
209+
keyTemplate: "",
210+
cachekeys: [],
211+
cacheForm: {}
106212
};
107213
},
108-
created() {
214+
created () {
109215
this.getList();
110216
this.openLoading();
111217
},
112218
methods: {
113219
/** 查缓存询信息 */
114-
getList() {
220+
getList () {
115221
// 查询 Redis 监控信息
116222
getCache().then((response) => {
117223
this.cache = response.data;
@@ -174,10 +280,55 @@ export default {
174280
this.keyListLoad = false;
175281
});
176282
},
283+
177284
// 打开加载层
178-
openLoading() {
285+
openLoading () {
179286
this.$modal.loading("正在加载缓存监控数据,请稍后!");
180287
},
288+
289+
// 打开缓存弹窗
290+
openCacheInfo (e) {
291+
this.open = true;
292+
let keyDefine = e.keyTemplate.substring(0, e.keyTemplate.length - 2);
293+
this.keyTemplate = keyDefine;
294+
// 加载键名列表
295+
this.handleCacheKeys(keyDefine);
296+
},
297+
298+
/** 键名前缀去除 */
299+
keyFormatter (cacheKey) {
300+
return cacheKey.replace(this.keyTemplate, "");
301+
},
302+
303+
// 获取键名列表
304+
handleCacheKeys (keyDefine){
305+
const cacheName = keyDefine !== undefined ? keyDefine : this.keyTemplate;
306+
getKeyDefines(cacheName).then(response => {
307+
this.cachekeys = response.data
308+
this.cacheForm = {}
309+
})
310+
},
311+
312+
// 获取缓存值
313+
handleCacheValue (e){
314+
getKeyValue(this.keyTemplate, e).then(response => {
315+
this.cacheForm = response.data
316+
})
317+
},
318+
319+
// 刷新键名列表
320+
refreshCacheKeys(){
321+
this.$modal.msgSuccess("刷新键名列表成功");
322+
this.handleCacheKeys();
323+
},
324+
325+
// 删除缓存
326+
handleClearCacheKey(key){
327+
deleteKeyValue(key).then(response =>{
328+
this.$modal.msgSuccess("清理缓存键名[" + key + "]成功");
329+
this.handleCacheKeys();
330+
})
331+
},
181332
},
182333
};
183334
</script>

0 commit comments

Comments
 (0)