You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
This repo is archived. You can view files and clone it, but cannot push or open issues/pull-requests.

73 lines
2.1 KiB

<script lang="ts" setup>
import { onMounted, ref } from 'vue'
import { baseInfoSchema, tableSchema } from './redis.data'
import RedisModal from './components/RedisModal.vue'
2 years ago
import { useModal } from '@/components/Modal'
import { Description } from '@/components/Description'
2 years ago
import { BasicTable, useTable } from '@/components/Table'
import { getCache, getKeyDefineList } from '@/api/infra/redis'
import { createAsyncComponent } from '@/utils/factory/createAsyncComponent'
defineOptions({ name: 'InfraRedis' })
const CommandStats = createAsyncComponent(() => import('./components/CommandStats.vue'))
const Memory = createAsyncComponent(() => import('./components/Memory.vue'))
const loading = ref(true)
const cacheInfo = ref<any>()
const commandStats = ref<any[]>([])
2 years ago
const memoryHuman = ref<any>()
async function getList() {
const res = await getCache()
cacheInfo.value = res.info
2 years ago
memoryHuman.value = res.info.used_memory_human
await res.commandStats.forEach((val) => {
commandStats.value.push({ name: val.command, value: val.calls })
})
loading.value = false
}
2 years ago
const [registerTable] = useTable({
loading,
maxHeight: 400,
title: '缓存列表',
api: getKeyDefineList,
rowKey: 'id',
columns: tableSchema,
pagination: false,
useSearchForm: false,
showTableSetting: false,
showIndexColumn: false,
2 years ago
})
const [registerModal, { openModal }] = useModal()
function openKeyTemplate(keyDefine) {
openModal(true, { record: keyDefine.keyTemplate })
}
onMounted(async () => {
await getList()
})
</script>
<template>
<div class="p-4">
<Description
title="基础信息"
:collapse-options="{ canExpand: true, helpMessage: 'Redis 基本信息' }"
:column="6"
:data="cacheInfo"
:schema="baseInfoSchema"
/>
<div class="md:flex enter-y mt-4">
<CommandStats class="md:w-1/2 w-full" :loading="loading" :command-stats="commandStats" />
<Memory class="md:w-1/2 w-full" :loading="loading" :memory-human="memoryHuman" />
</div>
<div class="md:flex enter-y mt-4">
<BasicTable @register="registerTable" @row-click="openKeyTemplate" />
</div>
<RedisModal @register="registerModal" />
</div>
</template>