parent
abb88d622a
commit
9d7e32fb07
@ -0,0 +1,39 @@ |
|||||||
|
package com.ruoyi.common.constant; |
||||||
|
|
||||||
|
/** |
||||||
|
* 缓存的key 常量 |
||||||
|
* |
||||||
|
* @author ruoyi |
||||||
|
*/ |
||||||
|
public class CacheConstants |
||||||
|
{ |
||||||
|
/** |
||||||
|
* 登录用户 redis key |
||||||
|
*/ |
||||||
|
public static final String LOGIN_TOKEN_KEY = "login_tokens:"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 验证码 redis key |
||||||
|
*/ |
||||||
|
public static final String CAPTCHA_CODE_KEY = "captcha_codes:"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 参数管理 cache key |
||||||
|
*/ |
||||||
|
public static final String SYS_CONFIG_KEY = "sys_config:"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 字典管理 cache key |
||||||
|
*/ |
||||||
|
public static final String SYS_DICT_KEY = "sys_dict:"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 防重提交 redis key |
||||||
|
*/ |
||||||
|
public static final String REPEAT_SUBMIT_KEY = "repeat_submit:"; |
||||||
|
|
||||||
|
/** |
||||||
|
* 限流 redis key |
||||||
|
*/ |
||||||
|
public static final String RATE_LIMIT_KEY = "rate_limit:"; |
||||||
|
} |
@ -0,0 +1,81 @@ |
|||||||
|
package com.ruoyi.system.domain; |
||||||
|
|
||||||
|
import com.ruoyi.common.utils.StringUtils; |
||||||
|
|
||||||
|
/** |
||||||
|
* 缓存信息 |
||||||
|
* |
||||||
|
* @author ruoyi |
||||||
|
*/ |
||||||
|
public class SysCache |
||||||
|
{ |
||||||
|
/** 缓存名称 */ |
||||||
|
private String cacheName = ""; |
||||||
|
|
||||||
|
/** 缓存键名 */ |
||||||
|
private String cacheKey = ""; |
||||||
|
|
||||||
|
/** 缓存内容 */ |
||||||
|
private String cacheValue = ""; |
||||||
|
|
||||||
|
/** 备注 */ |
||||||
|
private String remark = ""; |
||||||
|
|
||||||
|
public SysCache() |
||||||
|
{ |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
public SysCache(String cacheName, String remark) |
||||||
|
{ |
||||||
|
this.cacheName = cacheName; |
||||||
|
this.remark = remark; |
||||||
|
} |
||||||
|
|
||||||
|
public SysCache(String cacheName, String cacheKey, String cacheValue) |
||||||
|
{ |
||||||
|
this.cacheName = StringUtils.replace(cacheName, ":", ""); |
||||||
|
this.cacheKey = StringUtils.replace(cacheKey, cacheName, ""); |
||||||
|
this.cacheValue = cacheValue; |
||||||
|
} |
||||||
|
|
||||||
|
public String getCacheName() |
||||||
|
{ |
||||||
|
return cacheName; |
||||||
|
} |
||||||
|
|
||||||
|
public void setCacheName(String cacheName) |
||||||
|
{ |
||||||
|
this.cacheName = cacheName; |
||||||
|
} |
||||||
|
|
||||||
|
public String getCacheKey() |
||||||
|
{ |
||||||
|
return cacheKey; |
||||||
|
} |
||||||
|
|
||||||
|
public void setCacheKey(String cacheKey) |
||||||
|
{ |
||||||
|
this.cacheKey = cacheKey; |
||||||
|
} |
||||||
|
|
||||||
|
public String getCacheValue() |
||||||
|
{ |
||||||
|
return cacheValue; |
||||||
|
} |
||||||
|
|
||||||
|
public void setCacheValue(String cacheValue) |
||||||
|
{ |
||||||
|
this.cacheValue = cacheValue; |
||||||
|
} |
||||||
|
|
||||||
|
public String getRemark() |
||||||
|
{ |
||||||
|
return remark; |
||||||
|
} |
||||||
|
|
||||||
|
public void setRemark(String remark) |
||||||
|
{ |
||||||
|
this.remark = remark; |
||||||
|
} |
||||||
|
} |
After Width: | Height: | Size: 2.6 KiB |
@ -0,0 +1,241 @@ |
|||||||
|
<template> |
||||||
|
<div class="app-container"> |
||||||
|
<el-row :gutter="10"> |
||||||
|
<el-col :span="8"> |
||||||
|
<el-card style="height: calc(100vh - 125px)"> |
||||||
|
<div slot="header"> |
||||||
|
<span>缓存列表</span> |
||||||
|
<el-button |
||||||
|
style="float: right; padding: 3px 0" |
||||||
|
type="text" |
||||||
|
icon="el-icon-refresh-right" |
||||||
|
@click="refreshCacheNames()" |
||||||
|
></el-button> |
||||||
|
</div> |
||||||
|
<el-table |
||||||
|
v-loading="loading" |
||||||
|
:data="cacheNames" |
||||||
|
:height="tableHeight" |
||||||
|
highlight-current-row |
||||||
|
@row-click="getCacheKeys" |
||||||
|
style="width: 100%" |
||||||
|
> |
||||||
|
<el-table-column |
||||||
|
label="序号" |
||||||
|
width="60" |
||||||
|
type="index" |
||||||
|
></el-table-column> |
||||||
|
|
||||||
|
<el-table-column |
||||||
|
label="缓存名称" |
||||||
|
align="center" |
||||||
|
prop="cacheName" |
||||||
|
:show-overflow-tooltip="true" |
||||||
|
:formatter="nameFormatter" |
||||||
|
></el-table-column> |
||||||
|
|
||||||
|
<el-table-column |
||||||
|
label="备注" |
||||||
|
align="center" |
||||||
|
prop="remark" |
||||||
|
:show-overflow-tooltip="true" |
||||||
|
/> |
||||||
|
<el-table-column |
||||||
|
label="操作" |
||||||
|
width="60" |
||||||
|
align="center" |
||||||
|
class-name="small-padding fixed-width" |
||||||
|
> |
||||||
|
<template slot-scope="scope"> |
||||||
|
<el-button |
||||||
|
size="mini" |
||||||
|
type="text" |
||||||
|
icon="el-icon-delete" |
||||||
|
@click="handleClearCacheName(scope.row)" |
||||||
|
></el-button> |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
</el-table> |
||||||
|
</el-card> |
||||||
|
</el-col> |
||||||
|
|
||||||
|
<el-col :span="8"> |
||||||
|
<el-card style="height: calc(100vh - 125px)"> |
||||||
|
<div slot="header"> |
||||||
|
<span>键名列表</span> |
||||||
|
<el-button |
||||||
|
style="float: right; padding: 3px 0" |
||||||
|
type="text" |
||||||
|
icon="el-icon-refresh-right" |
||||||
|
@click="refreshCacheKeys()" |
||||||
|
></el-button> |
||||||
|
</div> |
||||||
|
<el-table |
||||||
|
v-loading="subLoading" |
||||||
|
:data="cacheKeys" |
||||||
|
:height="tableHeight" |
||||||
|
highlight-current-row |
||||||
|
@row-click="handleCacheValue" |
||||||
|
style="width: 100%" |
||||||
|
> |
||||||
|
<el-table-column |
||||||
|
label="序号" |
||||||
|
width="60" |
||||||
|
type="index" |
||||||
|
></el-table-column> |
||||||
|
<el-table-column |
||||||
|
label="缓存键名" |
||||||
|
align="center" |
||||||
|
:show-overflow-tooltip="true" |
||||||
|
:formatter="keyFormatter" |
||||||
|
> |
||||||
|
</el-table-column> |
||||||
|
<el-table-column |
||||||
|
label="操作" |
||||||
|
width="60" |
||||||
|
align="center" |
||||||
|
class-name="small-padding fixed-width" |
||||||
|
> |
||||||
|
<template slot-scope="scope"> |
||||||
|
<el-button |
||||||
|
size="mini" |
||||||
|
type="text" |
||||||
|
icon="el-icon-delete" |
||||||
|
@click="handleClearCacheKey(scope.row)" |
||||||
|
></el-button> |
||||||
|
</template> |
||||||
|
</el-table-column> |
||||||
|
</el-table> |
||||||
|
</el-card> |
||||||
|
</el-col> |
||||||
|
|
||||||
|
<el-col :span="8"> |
||||||
|
<el-card :bordered="false" style="height: calc(100vh - 125px)"> |
||||||
|
<div slot="header"> |
||||||
|
<span>缓存内容</span> |
||||||
|
<el-button |
||||||
|
style="float: right; padding: 3px 0" |
||||||
|
type="text" |
||||||
|
icon="el-icon-refresh-right" |
||||||
|
@click="handleClearCacheAll()" |
||||||
|
>清理全部</el-button |
||||||
|
> |
||||||
|
</div> |
||||||
|
<el-form :model="form"> |
||||||
|
<el-row :gutter="32"> |
||||||
|
<el-col :offset="1" :span="22"> |
||||||
|
<el-form-item label="缓存名称:" prop="cacheName"> |
||||||
|
<el-input v-model="cacheForm.cacheName" :readOnly="true" /> |
||||||
|
</el-form-item> |
||||||
|
</el-col> |
||||||
|
<el-col :offset="1" :span="22"> |
||||||
|
<el-form-item label="缓存键名:" prop="cacheKey"> |
||||||
|
<el-input v-model="cacheForm.cacheKey" :readOnly="true" /> |
||||||
|
</el-form-item> |
||||||
|
</el-col> |
||||||
|
<el-col :offset="1" :span="22"> |
||||||
|
<el-form-item label="缓存内容:" prop="cacheValue"> |
||||||
|
<el-input |
||||||
|
v-model="cacheForm.cacheValue" |
||||||
|
type="textarea" |
||||||
|
:rows="8" |
||||||
|
:readOnly="true" |
||||||
|
/> |
||||||
|
</el-form-item> |
||||||
|
</el-col> |
||||||
|
</el-row> |
||||||
|
</el-form> |
||||||
|
</el-card> |
||||||
|
</el-col> |
||||||
|
</el-row> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
|
||||||
|
<script> |
||||||
|
import { listCacheName, listCacheKey, getCacheValue, clearCacheName, clearCacheKey, clearCacheAll } from "@/api/monitor/cache"; |
||||||
|
|
||||||
|
export default { |
||||||
|
name: "CacheList", |
||||||
|
data() { |
||||||
|
return { |
||||||
|
cacheNames: [], |
||||||
|
cacheKeys: [], |
||||||
|
cacheForm: {}, |
||||||
|
loading: true, |
||||||
|
subLoading: false, |
||||||
|
nowCacheName: "", |
||||||
|
tableHeight: window.innerHeight - 200 |
||||||
|
}; |
||||||
|
}, |
||||||
|
created() { |
||||||
|
this.getCacheNames(); |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
/** 查询缓存名称列表 */ |
||||||
|
getCacheNames() { |
||||||
|
this.loading = true; |
||||||
|
listCacheName().then(response => { |
||||||
|
this.cacheNames = response.data; |
||||||
|
this.loading = false; |
||||||
|
}); |
||||||
|
}, |
||||||
|
/** 刷新缓存名称列表 */ |
||||||
|
refreshCacheNames() { |
||||||
|
this.getCacheNames(); |
||||||
|
this.$modal.msgSuccess("刷新缓存列表成功"); |
||||||
|
}, |
||||||
|
/** 清理指定名称缓存 */ |
||||||
|
handleClearCacheName(row) { |
||||||
|
clearCacheName(row.cacheName).then(response => { |
||||||
|
this.$modal.msgSuccess("清理缓存名称[" + this.nowCacheName + "]成功"); |
||||||
|
this.getCacheKeys(); |
||||||
|
}); |
||||||
|
}, |
||||||
|
/** 查询缓存键名列表 */ |
||||||
|
getCacheKeys(row) { |
||||||
|
const cacheName = row !== undefined ? row.cacheName : this.nowCacheName; |
||||||
|
if (cacheName === "") { |
||||||
|
return; |
||||||
|
} |
||||||
|
this.subLoading = true; |
||||||
|
listCacheKey(cacheName).then(response => { |
||||||
|
this.cacheKeys = response.data; |
||||||
|
this.subLoading = false; |
||||||
|
this.nowCacheName = cacheName; |
||||||
|
}); |
||||||
|
}, |
||||||
|
/** 刷新缓存键名列表 */ |
||||||
|
refreshCacheKeys() { |
||||||
|
this.getCacheKeys(); |
||||||
|
this.$modal.msgSuccess("刷新键名列表成功"); |
||||||
|
}, |
||||||
|
/** 清理指定键名缓存 */ |
||||||
|
handleClearCacheKey(cacheKey) { |
||||||
|
clearCacheKey(cacheKey).then(response => { |
||||||
|
this.$modal.msgSuccess("清理缓存键名[" + cacheKey + "]成功"); |
||||||
|
this.getCacheKeys(); |
||||||
|
}); |
||||||
|
}, |
||||||
|
/** 列表前缀去除 */ |
||||||
|
nameFormatter(row) { |
||||||
|
return row.cacheName.replace(":", ""); |
||||||
|
}, |
||||||
|
/** 键名前缀去除 */ |
||||||
|
keyFormatter(cacheKey) { |
||||||
|
return cacheKey.replace(this.nowCacheName, ""); |
||||||
|
}, |
||||||
|
/** 查询缓存内容详细 */ |
||||||
|
handleCacheValue(cacheKey) { |
||||||
|
getCacheValue(this.nowCacheName, cacheKey).then(response => { |
||||||
|
this.cacheForm = response.data; |
||||||
|
}); |
||||||
|
}, |
||||||
|
/** 清理全部缓存 */ |
||||||
|
handleClearCacheAll() { |
||||||
|
clearCacheAll().then(response => { |
||||||
|
this.$modal.msgSuccess("清理全部缓存成功"); |
||||||
|
}); |
||||||
|
} |
||||||
|
}, |
||||||
|
}; |
||||||
|
</script> |
Loading…
Reference in new issue