1
0
mirror of https://github.com/1Panel-dev/1Panel.git synced 2025-03-14 01:34:47 +08:00

fix: redis 配置增加范围限制

This commit is contained in:
ssongliu 2023-03-08 16:54:48 +08:00 committed by ssongliu
parent e1992de7af
commit 2061e00b29
5 changed files with 36 additions and 17 deletions

View File

@ -143,7 +143,7 @@ export namespace Database {
timeout: number; timeout: number;
maxclients: number; maxclients: number;
requirepass: string; requirepass: string;
maxmemory: number; maxmemory: string;
} }
export interface RedisPersistenceConf { export interface RedisPersistenceConf {
appendonly: string; appendonly: string;

View File

@ -396,7 +396,7 @@ export default {
rdbHelper1: 'In seconds, insert', rdbHelper1: 'In seconds, insert',
rdbHelper2: 'The data', rdbHelper2: 'The data',
rdbHelper3: 'Meeting either condition triggers RDB persistence', rdbHelper3: 'Meeting either condition triggers RDB persistence',
rdbInfo: 'Rule list has 0 value, please confirm and try again!', rdbInfo: 'Ensure that the value in the rule list ranges from 1 to 100000',
}, },
container: { container: {
createContainer: 'Create container', createContainer: 'Create container',

View File

@ -409,7 +409,7 @@ export default {
rdbHelper1: '秒內,插入', rdbHelper1: '秒內,插入',
rdbHelper2: '条数据', rdbHelper2: '条数据',
rdbHelper3: '符合任意一个条件将会触发RDB持久化', rdbHelper3: '符合任意一个条件将会触发RDB持久化',
rdbInfo: '规则列表存在 0 请确认后重试', rdbInfo: '请确认规则列表中值在 1-100000 之间',
}, },
container: { container: {
createContainer: '创建容器', createContainer: '创建容器',

View File

@ -73,14 +73,19 @@
<el-col :span="1"><br /></el-col> <el-col :span="1"><br /></el-col>
<el-col :span="10"> <el-col :span="10">
<el-form-item :label="$t('database.timeout')" prop="timeout"> <el-form-item :label="$t('database.timeout')" prop="timeout">
<el-input clearable type="number" v-model.number="form.timeout" /> <el-input clearable type="number" v-model.number="form.timeout">
<template #append>{{ $t('home.Second') }}</template>
</el-input>
<span class="input-help">{{ $t('database.timeoutHelper') }}</span> <span class="input-help">{{ $t('database.timeoutHelper') }}</span>
</el-form-item> </el-form-item>
<el-form-item :label="$t('database.maxclients')" prop="maxclients"> <el-form-item :label="$t('database.maxclients')" prop="maxclients">
<el-input clearable type="number" v-model.number="form.maxclients" /> <el-input clearable type="number" v-model.number="form.maxclients" />
</el-form-item> </el-form-item>
<el-form-item :label="$t('database.maxmemory')" prop="maxmemory"> <el-form-item :label="$t('database.maxmemory')" prop="maxmemory">
<el-input clearable type="number" v-model.number="form.maxmemory" /> <el-input clearable type="number" v-model.number="form.maxmemory">
<template #append>mb</template>
</el-input>
<span class="input-help">{{ $t('database.maxmemoryHelper') }}</span> <span class="input-help">{{ $t('database.maxmemoryHelper') }}</span>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -178,6 +183,21 @@ interface DialogProps {
const changeTab = (val: string) => { const changeTab = (val: string) => {
activeName.value = val; activeName.value = val;
switch (val) {
case 'conf':
loadConfFile();
break;
case 'persistence':
persistenceRef.value!.acceptParams({ status: redisStatus.value });
break;
case 'tuning':
case 'port':
loadform();
break;
case 'status':
statusRef.value!.acceptParams({ status: redisStatus.value });
break;
}
}; };
const changeLoading = (status: boolean) => { const changeLoading = (status: boolean) => {
@ -189,11 +209,6 @@ const acceptParams = (prop: DialogProps): void => {
redisName.value = prop.redisName; redisName.value = prop.redisName;
settingShow.value = true; settingShow.value = true;
loadConfFile(); loadConfFile();
if (redisStatus.value === 'Running') {
statusRef.value!.acceptParams({ status: prop.status });
persistenceRef.value!.acceptParams({ status: prop.status });
loadform();
}
}; };
const portRef = ref(); const portRef = ref();
@ -220,7 +235,6 @@ function callback(error: any) {
} }
} }
const onChangePort = async (formEl: FormInstance | undefined) => { const onChangePort = async (formEl: FormInstance | undefined) => {
console.log('asdqwdwqd');
if (!formEl) return; if (!formEl) return;
const result = await formEl.validateField('port', callback); const result = await formEl.validateField('port', callback);
if (!result) { if (!result) {
@ -260,7 +274,7 @@ const submtiForm = async () => {
let param = { let param = {
timeout: form.timeout + '', timeout: form.timeout + '',
maxclients: form.maxclients + '', maxclients: form.maxclients + '',
maxmemory: form.maxmemory + '', maxmemory: form.maxmemory + 'mb',
}; };
loading.value = true; loading.value = true;
await updateRedisConf(param) await updateRedisConf(param)
@ -311,7 +325,7 @@ const loadform = async () => {
form.name = res.data?.name; form.name = res.data?.name;
form.timeout = Number(res.data?.timeout); form.timeout = Number(res.data?.timeout);
form.maxclients = Number(res.data?.maxclients); form.maxclients = Number(res.data?.maxclients);
form.maxmemory = Number(res.data?.maxmemory); form.maxmemory = Number(res.data?.maxmemory.replaceAll('mb', '')) / 1048576;
form.port = Number(res.data?.port); form.port = Number(res.data?.port);
}; };

View File

@ -48,13 +48,13 @@
<td width="32%"> <td width="32%">
<el-input type="number" v-model="row.second"></el-input> <el-input type="number" v-model="row.second"></el-input>
</td> </td>
<td width="60px"> <td width="80px">
{{ $t('database.rdbHelper1') }} {{ $t('database.rdbHelper1') }}
</td> </td>
<td width="32%"> <td width="32%">
<el-input type="number" v-model="row.count"></el-input> <el-input type="number" v-model="row.count"></el-input>
</td> </td>
<td width="12%"> <td width="10%">
{{ $t('database.rdbHelper2') }} {{ $t('database.rdbHelper2') }}
</td> </td>
<td> <td>
@ -89,7 +89,11 @@
<el-table-column type="selection" fix /> <el-table-column type="selection" fix />
<el-table-column :label="$t('commons.table.name')" show-overflow-tooltip prop="fileName" /> <el-table-column :label="$t('commons.table.name')" show-overflow-tooltip prop="fileName" />
<el-table-column :label="$t('database.source')" prop="backupType"> <el-table-column :label="$t('database.source')" prop="backupType">
<template #default="{ row }">{{ $t('setting.' + row.source) }}</template> <template #default="{ row }">
<span v-if="row.source">
{{ $t('setting.' + row.source) }}
</span>
</template>
</el-table-column> </el-table-column>
<el-table-column :label="$t('file.dir')" show-overflow-tooltip prop="fileDir" /> <el-table-column :label="$t('file.dir')" show-overflow-tooltip prop="fileDir" />
<el-table-column :label="$t('commons.table.createdAt')" :formatter="dateFormat" prop="createdAt" /> <el-table-column :label="$t('commons.table.createdAt')" :formatter="dateFormat" prop="createdAt" />
@ -270,7 +274,7 @@ const onSave = async (formEl: FormInstance | undefined, type: string) => {
} }
let itemSaves = [] as Array<string>; let itemSaves = [] as Array<string>;
for (const item of form.saves) { for (const item of form.saves) {
if (item.count === 0 || item.second === 0) { if (item.count < 0 || item.count > 100000 || item.second < 0 || item.second > 100000) {
MsgInfo(i18n.global.t('database.rdbInfo')); MsgInfo(i18n.global.t('database.rdbInfo'));
return; return;
} }
@ -290,6 +294,7 @@ const onSave = async (formEl: FormInstance | undefined, type: string) => {
}; };
const loadform = async () => { const loadform = async () => {
console.log('adqwdqw');
form.saves = []; form.saves = [];
const res = await redisPersistenceConf(); const res = await redisPersistenceConf();
form.appendonly = res.data?.appendonly; form.appendonly = res.data?.appendonly;