Commit 2372c25e8d80dd3768c060dfe111905e3a0d756d

Authored by YunaiV
1 parent a0f7f0ff

完善 Redis 缓存的查询

yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/redis/RedisController.java
1 package cn.iocoder.yudao.module.infra.controller.admin.redis; 1 package cn.iocoder.yudao.module.infra.controller.admin.redis;
2 2
  3 +import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.util.StrUtil;
3 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 5 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
4 import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; 6 import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine;
5 import cn.iocoder.yudao.framework.redis.core.RedisKeyRegistry; 7 import cn.iocoder.yudao.framework.redis.core.RedisKeyRegistry;
6 -import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyRespVO; 8 +import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyDefineRespVO;
7 import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyValueRespVO; 9 import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyValueRespVO;
8 import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisMonitorRespVO; 10 import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisMonitorRespVO;
9 import cn.iocoder.yudao.module.infra.convert.redis.RedisConvert; 11 import cn.iocoder.yudao.module.infra.convert.redis.RedisConvert;
10 import io.swagger.annotations.Api; 12 import io.swagger.annotations.Api;
  13 +import io.swagger.annotations.ApiImplicitParam;
11 import io.swagger.annotations.ApiOperation; 14 import io.swagger.annotations.ApiOperation;
12 import org.springframework.data.redis.connection.RedisServerCommands; 15 import org.springframework.data.redis.connection.RedisServerCommands;
13 import org.springframework.data.redis.core.Cursor; 16 import org.springframework.data.redis.core.Cursor;
@@ -18,11 +21,7 @@ import org.springframework.security.access.prepost.PreAuthorize; @@ -18,11 +21,7 @@ import org.springframework.security.access.prepost.PreAuthorize;
18 import org.springframework.web.bind.annotation.*; 21 import org.springframework.web.bind.annotation.*;
19 22
20 import javax.annotation.Resource; 23 import javax.annotation.Resource;
21 -import java.nio.charset.StandardCharsets;  
22 -import java.util.HashSet;  
23 -import java.util.List;  
24 -import java.util.Properties;  
25 -import java.util.Set; 24 +import java.util.*;
26 25
27 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 26 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
28 27
@@ -48,69 +47,66 @@ public class RedisController { @@ -48,69 +47,66 @@ public class RedisController {
48 return success(RedisConvert.INSTANCE.build(info, dbSize, commandStats)); 47 return success(RedisConvert.INSTANCE.build(info, dbSize, commandStats));
49 } 48 }
50 49
51 - @GetMapping("/get-key-list") 50 + @GetMapping("/get-key-define-list")
52 @ApiOperation("获得 Redis Key 模板列表") 51 @ApiOperation("获得 Redis Key 模板列表")
53 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") 52 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')")
54 - public CommonResult<List<RedisKeyRespVO>> getKeyList() { 53 + public CommonResult<List<RedisKeyDefineRespVO>> getKeyDefineList() {
55 List<RedisKeyDefine> keyDefines = RedisKeyRegistry.list(); 54 List<RedisKeyDefine> keyDefines = RedisKeyRegistry.list();
56 return success(RedisConvert.INSTANCE.convertList(keyDefines)); 55 return success(RedisConvert.INSTANCE.convertList(keyDefines));
57 } 56 }
58 57
59 - @GetMapping("/get-key-Defines") 58 + @GetMapping("/get-key-list")
60 @ApiOperation("获得 Redis keys 键名列表") 59 @ApiOperation("获得 Redis keys 键名列表")
  60 + @ApiImplicitParam(name = "keyTemplate", value = "Redis Key 定义", example = "true", dataTypeClass = String.class)
61 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") 61 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')")
62 - public CommonResult<Set<String>> getKeyDefines(@RequestParam("keyDefine") String keyDefine) {  
63 - Set<String> keys = new HashSet<>();  
64 - stringRedisTemplate.execute((RedisCallback<Set<String>>) connection -> {  
65 - try (Cursor<byte[]> cursor = connection.scan(ScanOptions.scanOptions()  
66 - .match(keyDefine + "*")  
67 - .count(Integer.MAX_VALUE).build())) {  
68 - while (cursor.hasNext()) {  
69 - keys.add(new String(cursor.next(), StandardCharsets.UTF_8));  
70 - } 62 + public CommonResult<Set<String>> getKeyDefineList(@RequestParam("keyTemplate") String keyTemplate) {
  63 + return success(getKeyDefineList0(keyTemplate));
  64 + }
  65 +
  66 + private Set<String> getKeyDefineList0(String keyTemplate) {
  67 + // key 格式化
  68 + String key = StrUtil.replace(keyTemplate, "%[s|c|b|d|x|o|f|a|e|g]", parameter -> "*");
  69 + // scan 扫描 key
  70 + Set<String> keys = new LinkedHashSet<>();
  71 + stringRedisTemplate.execute((RedisCallback<Set<String>>) connection -> {
  72 + try (Cursor<byte[]> cursor = connection.scan(ScanOptions.scanOptions().match(key).count(100).build())) {
  73 + cursor.forEachRemaining(value -> keys.add(StrUtil.utf8Str(value)));
71 } catch (Exception e) { 74 } catch (Exception e) {
72 throw new RuntimeException(e); 75 throw new RuntimeException(e);
73 } 76 }
74 return keys; 77 return keys;
75 }); 78 });
76 - return success(keys);  
77 - }  
78 -  
79 - @DeleteMapping("/delete-key-defines")  
80 - @ApiOperation("删除 Redis Key 根据模板")  
81 - @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')")  
82 - public CommonResult<Boolean> deleteKeyDefines(@RequestParam("keyDefine") String keyDefine) {  
83 - Set<String> keys = stringRedisTemplate.keys(keyDefine + "*");  
84 - if(keys != null && keys.isEmpty()){  
85 - stringRedisTemplate.delete(keys);  
86 - }  
87 - return success(Boolean.TRUE); 79 + return keys;
88 } 80 }
89 81
90 @GetMapping("/get-key-value") 82 @GetMapping("/get-key-value")
91 @ApiOperation("获得 Redis key 内容") 83 @ApiOperation("获得 Redis key 内容")
  84 + @ApiImplicitParam(name = "key", value = "Redis Key", example = "oauth2_access_token:233", dataTypeClass = String.class)
92 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") 85 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')")
93 - public CommonResult<RedisKeyValueRespVO> getKeyValue(@RequestParam("keyDefine") String keyDefine, @RequestParam("cacheKey") String cacheKey) {  
94 - String cacheValue = stringRedisTemplate.opsForValue().get(cacheKey);  
95 - return success(RedisKeyValueRespVO.of(keyDefine, cacheKey, cacheValue)); 86 + public CommonResult<RedisKeyValueRespVO> getKeyValue(@RequestParam("key") String key) {
  87 + String value = stringRedisTemplate.opsForValue().get(key);
  88 + return success(new RedisKeyValueRespVO(key, value));
96 } 89 }
97 90
98 - @DeleteMapping("/delete-key-value")  
99 - @ApiOperation("删除 Redis Key 根据key") 91 + @DeleteMapping("/delete-key")
  92 + @ApiOperation("删除 Redis Key")
  93 + @ApiImplicitParam(name = "key", value = "Redis Key", example = "oauth2_access_token:233", dataTypeClass = String.class)
100 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") 94 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')")
101 - public CommonResult<Boolean> deleteKeyValue(@RequestParam("cacheKey") String cacheKey) {  
102 - stringRedisTemplate.delete(cacheKey); 95 + public CommonResult<Boolean> deleteKey(@RequestParam("key") String key) {
  96 + stringRedisTemplate.delete(key);
103 return success(Boolean.TRUE); 97 return success(Boolean.TRUE);
104 } 98 }
105 99
106 - @DeleteMapping("/delete-cache-all")  
107 - @ApiOperation(value="删除 所有缓存", notes="不使用该接口") 100 + @DeleteMapping("/delete-keys")
  101 + @ApiOperation("删除 Redis Key 根据模板")
  102 + @ApiImplicitParam(name = "keyTemplate", value = "Redis Key 定义", example = "true", dataTypeClass = String.class)
108 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')") 103 @PreAuthorize("@ss.hasPermission('infra:redis:get-key-list')")
109 - public CommonResult<Boolean> deleteCacheAll() {  
110 - return success(stringRedisTemplate.execute((RedisCallback<Boolean>) connection -> {  
111 - connection.flushAll();  
112 - return Boolean.TRUE;  
113 - })); 104 + public CommonResult<Boolean> deleteKeys(@RequestParam("keyTemplate") String keyTemplate) {
  105 + Set<String> keys = getKeyDefineList0(keyTemplate);
  106 + if (CollUtil.isNotEmpty(keys)) {
  107 + stringRedisTemplate.delete(keys);
  108 + }
  109 + return success(Boolean.TRUE);
114 } 110 }
115 111
116 } 112 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/redis/vo/RedisKeyRespVO.java renamed to yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/redis/vo/RedisKeyDefineRespVO.java
@@ -13,9 +13,9 @@ import java.time.Duration; @@ -13,9 +13,9 @@ import java.time.Duration;
13 @Data 13 @Data
14 @Builder 14 @Builder
15 @AllArgsConstructor 15 @AllArgsConstructor
16 -public class RedisKeyRespVO { 16 +public class RedisKeyDefineRespVO {
17 17
18 - @ApiModelProperty(value = "login_user:%s", required = true, example = "String") 18 + @ApiModelProperty(value = "Key 模板", required = true, example = "login_user:%s")
19 private String keyTemplate; 19 private String keyTemplate;
20 20
21 @ApiModelProperty(value = "Key 类型的枚举", required = true, example = "String") 21 @ApiModelProperty(value = "Key 类型的枚举", required = true, example = "String")
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/controller/admin/redis/vo/RedisKeyValueRespVO.java
@@ -3,32 +3,17 @@ package cn.iocoder.yudao.module.infra.controller.admin.redis.vo; @@ -3,32 +3,17 @@ package cn.iocoder.yudao.module.infra.controller.admin.redis.vo;
3 import io.swagger.annotations.ApiModel; 3 import io.swagger.annotations.ApiModel;
4 import io.swagger.annotations.ApiModelProperty; 4 import io.swagger.annotations.ApiModelProperty;
5 import lombok.AllArgsConstructor; 5 import lombok.AllArgsConstructor;
6 -import lombok.Builder;  
7 import lombok.Data; 6 import lombok.Data;
8 -import org.apache.commons.lang3.StringUtils;  
9 7
10 -@ApiModel("管理后台 - Redis Key Value onse VO") 8 +@ApiModel("管理后台 - 单个 Redis Key Value Response VO")
11 @Data 9 @Data
12 -@Builder  
13 @AllArgsConstructor 10 @AllArgsConstructor
14 public class RedisKeyValueRespVO { 11 public class RedisKeyValueRespVO {
15 12
16 - @ApiModelProperty(value = "oauth2_access_token:%s", required = true, example = "String")  
17 - private String keyTemplate;  
18 -  
19 @ApiModelProperty(value = "c5f6990767804a928f4bb96ca249febf", required = true, example = "String") 13 @ApiModelProperty(value = "c5f6990767804a928f4bb96ca249febf", required = true, example = "String")
20 private String key; 14 private String key;
21 15
22 @ApiModelProperty(required = true, example = "String") 16 @ApiModelProperty(required = true, example = "String")
23 private String value; 17 private String value;
24 18
25 - public static RedisKeyValueRespVO of(String keyTemplate, String key, String value){  
26 - return RedisKeyValueRespVO.builder()  
27 - .keyTemplate(StringUtils.replace(keyTemplate, ":", ""))  
28 - .key(StringUtils.replace(key, keyTemplate, ""))  
29 - .value(value)  
30 - .build();  
31 - }  
32 -  
33 -  
34 } 19 }
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/convert/redis/RedisConvert.java
@@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.convert.redis; @@ -2,7 +2,7 @@ package cn.iocoder.yudao.module.infra.convert.redis;
2 2
3 import cn.hutool.core.util.StrUtil; 3 import cn.hutool.core.util.StrUtil;
4 import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine; 4 import cn.iocoder.yudao.framework.redis.core.RedisKeyDefine;
5 -import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyRespVO; 5 +import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisKeyDefineRespVO;
6 import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisMonitorRespVO; 6 import cn.iocoder.yudao.module.infra.controller.admin.redis.vo.RedisMonitorRespVO;
7 import org.mapstruct.Mapper; 7 import org.mapstruct.Mapper;
8 import org.mapstruct.factory.Mappers; 8 import org.mapstruct.factory.Mappers;
@@ -29,6 +29,6 @@ public interface RedisConvert { @@ -29,6 +29,6 @@ public interface RedisConvert {
29 return respVO; 29 return respVO;
30 } 30 }
31 31
32 - List<RedisKeyRespVO> convertList(List<RedisKeyDefine> list); 32 + List<RedisKeyDefineRespVO> convertList(List<RedisKeyDefine> list);
33 33
34 } 34 }
yudao-ui-admin/src/api/infra/redis.js
@@ -9,34 +9,46 @@ export function getCache() { @@ -9,34 +9,46 @@ export function getCache() {
9 } 9 }
10 10
11 // 获取模块 11 // 获取模块
12 -export function getKeyList() { 12 +export function getKeyDefineList() {
13 return request({ 13 return request({
14 - url: '/infra/redis/get-key-list', 14 + url: '/infra/redis/get-key-define-list',
15 method: 'get' 15 method: 'get'
16 }) 16 })
17 } 17 }
18 18
19 // 获取键名列表 19 // 获取键名列表
20 -export function getKeyDefines(keyDefine) { 20 +export function getKeyList(keyTemplate) {
21 return request({ 21 return request({
22 - url: '/infra/redis/get-key-Defines?keyDefine=' + keyDefine,  
23 - method: 'get' 22 + url: '/infra/redis/get-key-list',
  23 + method: 'get',
  24 + params: {
  25 + keyTemplate
  26 + }
24 }) 27 })
25 } 28 }
26 29
27 // 获取缓存内容 30 // 获取缓存内容
28 -export function getKeyValue(keyDefine, key) { 31 +export function getKeyValue(key) {
29 return request({ 32 return request({
30 - url: '/infra/redis/get-key-value?keyDefine=' + keyDefine + "&cacheKey=" + key, 33 + url: '/infra/redis/get-key-value?key=' + key,
31 method: 'get' 34 method: 'get'
32 }) 35 })
33 } 36 }
34 37
35 // 根据键名删除缓存 38 // 根据键名删除缓存
36 -export function deleteKeyValue(key) { 39 +export function deleteKey(key) {
37 return request({ 40 return request({
38 - url: '/infra/redis/delete-key-value?cacheKey=' + key, 41 + url: '/infra/redis/delete-key?key=' + key,
39 method: 'delete' 42 method: 'delete'
40 }) 43 })
41 } 44 }
42 45
  46 +export function deleteKeys(keyTemplate) {
  47 + return request({
  48 + url: '/infra/redis/delete-keys?',
  49 + method: 'delete',
  50 + params: {
  51 + keyTemplate
  52 + }
  53 + })
  54 +}
yudao-ui-admin/src/views/infra/redis/index.vue
@@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
31 </tr> 31 </tr>
32 <tr> 32 <tr>
33 <td><div class="cell">AOF是否开启</div></td> 33 <td><div class="cell">AOF是否开启</div></td>
34 - <td><div class="cell" v-if="cache.info">{{ cache.info.aof_enabled == "0" ? "否" : "是" }}</div></td> 34 + <td><div class="cell" v-if="cache.info">{{ cache.info.aof_enabled === "0" ? "否" : "是" }}</div></td>
35 <td><div class="cell">RDB是否成功</div></td> 35 <td><div class="cell">RDB是否成功</div></td>
36 <td><div class="cell" v-if="cache.info">{{ cache.info.rdb_last_bgsave_status }}</div></td> 36 <td><div class="cell" v-if="cache.info">{{ cache.info.rdb_last_bgsave_status }}</div></td>
37 <td><div class="cell">Key数量</div></td> 37 <td><div class="cell">Key数量</div></td>
@@ -66,12 +66,7 @@ @@ -66,12 +66,7 @@
66 </el-col> 66 </el-col>
67 </el-row> 67 </el-row>
68 68
69 - <el-table  
70 - v-loading="keyListLoad"  
71 - :data="keyList"  
72 - row-key="id"  
73 - @row-click="openCacheInfo"  
74 - > 69 + <el-table v-loading="keyDefineListLoad" :data="keyDefineList" row-key="id" @row-click="openKeyTemplate">
75 <el-table-column prop="keyTemplate" label="Key 模板" width="200" /> 70 <el-table-column prop="keyTemplate" label="Key 模板" width="200" />
76 <el-table-column prop="keyType" label="Key 类型" width="100" /> 71 <el-table-column prop="keyType" label="Key 类型" width="100" />
77 <el-table-column prop="valueType" label="Value 类型" /> 72 <el-table-column prop="valueType" label="Value 类型" />
@@ -90,92 +85,44 @@ @@ -90,92 +85,44 @@
90 </el-table> 85 </el-table>
91 86
92 <!-- 缓存模块信息框 --> 87 <!-- 缓存模块信息框 -->
93 - <el-dialog  
94 - :title="keyTemplate + '模块'"  
95 - :visible.sync="open"  
96 - width="60vw"  
97 - append-to-body  
98 - > 88 + <el-dialog :title="keyTemplate + ' 模板'" :visible.sync="open" width="70vw" append-to-body>
99 <el-row :gutter="10"> 89 <el-row :gutter="10">
100 - <el-col :span="10" class="card-box">  
101 - <el-card style="height: 70vh"> 90 + <el-col :span="14" class="card-box">
  91 + <el-card style="height: 70vh; overflow: scroll">
102 <div slot="header"> 92 <div slot="header">
103 <span>键名列表</span> 93 <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> 94 + <el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-refresh-right" @click="refreshKeys" />
110 </div> 95 </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 - > 96 + <el-table :data="cacheKeys" style="width: 100%" @row-click="handleKeyValue">
  97 + <el-table-column label="缓存键名" align="center" :show-overflow-tooltip="true">
  98 + <template slot-scope="scope">{{ scope.row }}</template>
127 </el-table-column> 99 </el-table-column>
128 - <el-table-column  
129 - label="操作"  
130 - width="60"  
131 - align="center"  
132 - class-name="small-padding fixed-width"  
133 - > 100 + <el-table-column label="操作" width="60" align="center" class-name="small-padding fixed-width">
134 <template slot-scope="scope"> 101 <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> 102 + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDeleteKey(scope.row)" />
141 </template> 103 </template>
142 </el-table-column> 104 </el-table-column>
143 </el-table> 105 </el-table>
144 </el-card> 106 </el-card>
145 </el-col> 107 </el-col>
146 108
147 - <el-col :span="14"> 109 + <el-col :span="10">
148 <el-card :bordered="false" style="height: 70vh"> 110 <el-card :bordered="false" style="height: 70vh">
149 <div slot="header"> 111 <div slot="header">
150 <span>缓存内容</span> 112 <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 - --> 113 + <el-button style="float: right; padding: 3px 0" type="text" icon="el-icon-refresh-right"
  114 + @click="handleDeleteKeys(keyTemplate)">清理全部</el-button>
158 </div> 115 </div>
159 <el-form :model="cacheForm"> 116 <el-form :model="cacheForm">
160 <el-row :gutter="32"> 117 <el-row :gutter="32">
161 <el-col :offset="1" :span="22"> 118 <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"> 119 <el-form-item label="缓存键名:" prop="key">
168 <el-input v-model="cacheForm.key" :readOnly="true" /> 120 <el-input v-model="cacheForm.key" :readOnly="true" />
169 </el-form-item> 121 </el-form-item>
170 </el-col> 122 </el-col>
171 <el-col :offset="1" :span="22"> 123 <el-col :offset="1" :span="22">
172 <el-form-item label="缓存内容:" prop="value"> 124 <el-form-item label="缓存内容:" prop="value">
173 - <el-input  
174 - v-model="cacheForm.value"  
175 - type="textarea"  
176 - :rows="12"  
177 - :readOnly="true"  
178 - /> 125 + <el-input v-model="cacheForm.value" type="textarea" :rows="12" :readOnly="true"/>
179 </el-form-item> 126 </el-form-item>
180 </el-col> 127 </el-col>
181 </el-row> 128 </el-row>
@@ -188,7 +135,7 @@ @@ -188,7 +135,7 @@
188 </template> 135 </template>
189 136
190 <script> 137 <script>
191 -import { getCache, getKeyList, getKeyDefines, getKeyValue, deleteKeyValue } from "@/api/infra/redis"; 138 +import {getCache, getKeyDefineList, getKeyList, getKeyValue, deleteKey, deleteKeys} from "@/api/infra/redis";
192 import echarts from "echarts"; 139 import echarts from "echarts";
193 140
194 export default { 141 export default {
@@ -202,12 +149,12 @@ export default { @@ -202,12 +149,12 @@ export default {
202 // cache 信息 149 // cache 信息
203 cache: [], 150 cache: [],
204 // key 列表 151 // key 列表
205 - keyListLoad: true,  
206 - keyList: [], 152 + keyDefineListLoad: true,
  153 + keyDefineList: [],
207 // 模块弹出框 154 // 模块弹出框
208 open: false, 155 open: false,
209 keyTemplate: "", 156 keyTemplate: "",
210 - cachekeys: [], 157 + cacheKeys: [],
211 cacheForm: {} 158 cacheForm: {}
212 }; 159 };
213 }, 160 },
@@ -275,9 +222,9 @@ export default { @@ -275,9 +222,9 @@ export default {
275 }); 222 });
276 223
277 // 查询 Redis Key 列表 224 // 查询 Redis Key 列表
278 - getKeyList().then(response => {  
279 - this.keyList = response.data;  
280 - this.keyListLoad = false; 225 + getKeyDefineList().then(response => {
  226 + this.keyDefineList = response.data;
  227 + this.keyDefineListLoad = false;
281 }); 228 });
282 }, 229 },
283 230
@@ -287,46 +234,45 @@ export default { @@ -287,46 +234,45 @@ export default {
287 }, 234 },
288 235
289 // 打开缓存弹窗 236 // 打开缓存弹窗
290 - openCacheInfo (e) { 237 + openKeyTemplate (keyDefine) {
291 this.open = true; 238 this.open = true;
292 - let keyDefine = e.keyTemplate.substring(0, e.keyTemplate.length - 2);  
293 - this.keyTemplate = keyDefine;  
294 // 加载键名列表 239 // 加载键名列表
295 - this.handleCacheKeys(keyDefine);  
296 - },  
297 -  
298 - /** 键名前缀去除 */  
299 - keyFormatter (cacheKey) {  
300 - return cacheKey.replace(this.keyTemplate, ""); 240 + this.keyTemplate = keyDefine.keyTemplate;
  241 + this.doGetKeyList(this.keyTemplate);
301 }, 242 },
302 243
303 // 获取键名列表 244 // 获取键名列表
304 - handleCacheKeys (keyDefine){  
305 - const cacheName = keyDefine !== undefined ? keyDefine : this.keyTemplate;  
306 - getKeyDefines(cacheName).then(response => {  
307 - this.cachekeys = response.data 245 + doGetKeyList (keyTemplate) {
  246 + getKeyList(keyTemplate).then(response => {
  247 + this.cacheKeys = response.data
308 this.cacheForm = {} 248 this.cacheForm = {}
309 }) 249 })
310 }, 250 },
311 251
312 // 获取缓存值 252 // 获取缓存值
313 - handleCacheValue (e){  
314 - getKeyValue(this.keyTemplate, e).then(response => { 253 + handleKeyValue (key) {
  254 + getKeyValue(key).then(response => {
315 this.cacheForm = response.data 255 this.cacheForm = response.data
316 }) 256 })
317 }, 257 },
318 258
319 // 刷新键名列表 259 // 刷新键名列表
320 - refreshCacheKeys(){ 260 + refreshKeys() {
321 this.$modal.msgSuccess("刷新键名列表成功"); 261 this.$modal.msgSuccess("刷新键名列表成功");
322 - this.handleCacheKeys(); 262 + this.doGetKeyList(this.keyTemplate);
323 }, 263 },
324 264
325 // 删除缓存 265 // 删除缓存
326 - handleClearCacheKey(key){  
327 - deleteKeyValue(key).then(response =>{ 266 + handleDeleteKey(key){
  267 + deleteKey(key).then(response => {
328 this.$modal.msgSuccess("清理缓存键名[" + key + "]成功"); 268 this.$modal.msgSuccess("清理缓存键名[" + key + "]成功");
329 - this.handleCacheKeys(); 269 + this.doGetKeyList(this.keyTemplate);
  270 + })
  271 + },
  272 + handleDeleteKeys(keyTemplate){
  273 + deleteKeys(keyTemplate).then(response => {
  274 + this.$modal.msgSuccess("清空[" + keyTemplate + "]成功");
  275 + this.doGetKeyList(this.keyTemplate);
330 }) 276 })
331 }, 277 },
332 }, 278 },