From 63b49f1d40f673004f94bd552c4fac6ef5189c89 Mon Sep 17 00:00:00 2001 From: xlsea Date: Sun, 27 Apr 2025 18:32:40 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=20redis=20=E7=9B=91?= =?UTF-8?q?=E6=8E=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/locales/langs/en-us.ts | 3 +- src/locales/langs/zh-cn.ts | 3 +- src/router/elegant/imports.ts | 1 + src/router/elegant/routes.ts | 9 + src/router/elegant/transform.ts | 1 + src/service/api/monitor/cache.ts | 8 + src/typings/api/monitor.api.d.ts | 40 ++ src/typings/elegant-router.d.ts | 2 + src/views/monitor/cache/index.vue | 697 ++++++++++++++++++++++++++++++ 9 files changed, 762 insertions(+), 2 deletions(-) create mode 100644 src/service/api/monitor/cache.ts create mode 100644 src/views/monitor/cache/index.vue diff --git a/src/locales/langs/en-us.ts b/src/locales/langs/en-us.ts index 719cc82c..f1e1bff2 100644 --- a/src/locales/langs/en-us.ts +++ b/src/locales/langs/en-us.ts @@ -185,7 +185,8 @@ const local: App.I18n.Schema = { system_notice: 'Notice Management', 'social-callback': 'Social Callback', system_oss: 'File Management', - 'system_oss-config': 'OSS Config' + 'system_oss-config': 'OSS Config', + monitor_cache: 'Cache Monitor' }, page: { login: { diff --git a/src/locales/langs/zh-cn.ts b/src/locales/langs/zh-cn.ts index cc687434..ccecff32 100644 --- a/src/locales/langs/zh-cn.ts +++ b/src/locales/langs/zh-cn.ts @@ -185,7 +185,8 @@ const local: App.I18n.Schema = { system_notice: '通知公告', 'social-callback': '单点登录回调', system_oss: '文件管理', - 'system_oss-config': 'OSS配置' + 'system_oss-config': 'OSS配置', + monitor_cache: '缓存监控' }, page: { login: { diff --git a/src/router/elegant/imports.ts b/src/router/elegant/imports.ts index 594cee43..afbf52da 100644 --- a/src/router/elegant/imports.ts +++ b/src/router/elegant/imports.ts @@ -22,6 +22,7 @@ export const views: Record Promise import("@/views/_builtin/login/index.vue"), "social-callback": () => import("@/views/_builtin/social-callback/index.vue"), home: () => import("@/views/home/index.vue"), + monitor_cache: () => import("@/views/monitor/cache/index.vue"), "monitor_login-infor": () => import("@/views/monitor/login-infor/index.vue"), "monitor_oper-log": () => import("@/views/monitor/oper-log/index.vue"), system_client: () => import("@/views/system/client/index.vue"), diff --git a/src/router/elegant/routes.ts b/src/router/elegant/routes.ts index e089f9fb..d0ffea60 100644 --- a/src/router/elegant/routes.ts +++ b/src/router/elegant/routes.ts @@ -84,6 +84,15 @@ export const generatedRoutes: GeneratedRoute[] = [ i18nKey: 'route.monitor' }, children: [ + { + name: 'monitor_cache', + path: '/monitor/cache', + component: 'view.monitor_cache', + meta: { + title: 'monitor_cache', + i18nKey: 'route.monitor_cache' + } + }, { name: 'monitor_login-infor', path: '/monitor/login-infor', diff --git a/src/router/elegant/transform.ts b/src/router/elegant/transform.ts index 0a388316..f4bbd43c 100644 --- a/src/router/elegant/transform.ts +++ b/src/router/elegant/transform.ts @@ -170,6 +170,7 @@ const routeMap: RouteMap = { "iframe-page": "/iframe-page/:url", "login": "/login/:module(pwd-login|code-login|register|reset-pwd|bind-wechat)?", "monitor": "/monitor", + "monitor_cache": "/monitor/cache", "monitor_login-infor": "/monitor/login-infor", "monitor_oper-log": "/monitor/oper-log", "social-callback": "/social-callback", diff --git a/src/service/api/monitor/cache.ts b/src/service/api/monitor/cache.ts new file mode 100644 index 00000000..18583b40 --- /dev/null +++ b/src/service/api/monitor/cache.ts @@ -0,0 +1,8 @@ +import { request } from '@/service/request'; + +export function fetchGetMonitorCacheInfo() { + return request({ + url: '/monitor/cache', + method: 'get' + }); +} diff --git a/src/typings/api/monitor.api.d.ts b/src/typings/api/monitor.api.d.ts index 682d4068..ff913823 100644 --- a/src/typings/api/monitor.api.d.ts +++ b/src/typings/api/monitor.api.d.ts @@ -94,5 +94,45 @@ declare namespace Api { /** login infor list */ type LoginInforList = Api.Common.PaginatingQueryRecord; + + /** cache info */ + type CacheInfo = Common.CommonRecord<{ + /** info */ + info: { + /** Redis 版本 */ + redis_version: string; + /** 运行模式 */ + redis_mode: string; + /** 端口 */ + tcp_port: number; + /** 客户端数 */ + connected_clients: number; + /** 运行时间(天) */ + uptime_in_days: number; + /** 使用内存 */ + used_memory_human: string; + /** 使用 CPU */ + used_cpu_user_children: string; + /** 内存配置 */ + maxmemory_human: number; + /** AOF 是否开启 */ + aof_enabled: string; + /** RDB 是否成功 */ + rdb_last_bgsave_status: string; + /** Key 数量 */ + dbSize: number; + /** 网络入口 */ + instantaneous_input_kbps: number; + /** 网络出口 */ + instantaneous_output_kbps: number; + }; + /** db size */ + dbSize: number; + /** command stats */ + commandStats: { + name: string; + value: number; + }[]; + }>; } } diff --git a/src/typings/elegant-router.d.ts b/src/typings/elegant-router.d.ts index ce8e761f..2bd7b6b3 100644 --- a/src/typings/elegant-router.d.ts +++ b/src/typings/elegant-router.d.ts @@ -24,6 +24,7 @@ declare module "@elegant-router/types" { "iframe-page": "/iframe-page/:url"; "login": "/login/:module(pwd-login|code-login|register|reset-pwd|bind-wechat)?"; "monitor": "/monitor"; + "monitor_cache": "/monitor/cache"; "monitor_login-infor": "/monitor/login-infor"; "monitor_oper-log": "/monitor/oper-log"; "social-callback": "/social-callback"; @@ -107,6 +108,7 @@ declare module "@elegant-router/types" { | "login" | "social-callback" | "home" + | "monitor_cache" | "monitor_login-infor" | "monitor_oper-log" | "system_client" diff --git a/src/views/monitor/cache/index.vue b/src/views/monitor/cache/index.vue new file mode 100644 index 00000000..d02b80b7 --- /dev/null +++ b/src/views/monitor/cache/index.vue @@ -0,0 +1,697 @@ + + + + +