Skip to content

Commit dc0bf38

Browse files
author
zhoudian
committed
cluster 搜索
1 parent 6446b17 commit dc0bf38

File tree

3 files changed

+126
-106
lines changed

3 files changed

+126
-106
lines changed

src/pages/HostKey/index.js

Lines changed: 70 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,11 @@ import {
1212
} from "antd";
1313
import { message } from "antd";
1414
import { SearchOutlined } from "@ant-design/icons";
15-
import { REDIS_DATA_TYPE, REDIS_DATA_SHOW } from "@/utils/constant";
15+
import {
16+
REDIS_DATA_TYPE,
17+
REDIS_DATA_SHOW,
18+
CONNECT_TYPE,
19+
} from "@/utils/constant";
1620
import KeysHistoryService from "@/services/KeysHistoryService";
1721
import Log from "@/services/LogService";
1822
import "@/pages/CommonCss/zebra.css";
@@ -66,17 +70,7 @@ class HostKey extends Component {
6670
};
6771
searchInput = React.createRef();
6872
componentDidMount() {
69-
let pattern = "*";
70-
let cursor = "0";
71-
this.setState({ tableData: [], searchDisable: true, currentPage: 1 });
72-
this.props.node.redis.select(this.props.db, (err, res) => {
73-
if (err) {
74-
message.error("" + err);
75-
Log.error("[cmd=HostKey] componentDidMount error", err, res);
76-
return;
77-
}
78-
this.loadRedisDataByPattern(pattern, cursor, "*");
79-
});
73+
this.searchKey("*");
8074
this.props.triggerRef(this);
8175
}
8276
/**
@@ -130,12 +124,26 @@ class HostKey extends Component {
130124
tableData: tableData,
131125
tableTotal: tableData.length,
132126
});
127+
}
128+
if (
129+
this.state.tableTotal <
130+
REDIS_DATA_SHOW.MAX_SEARCH_DATA_SIZE &&
131+
res[0] !== "0"
132+
) {
133+
this.loadRedisDataByPattern(pattern, res[0], originalKey);
134+
} else {
133135
// 如果key存在,则添加到搜索历史记录
134-
let host = this.props.node.data.host;
135-
let port = this.props.node.data.port;
136-
KeysHistoryService.addKeysHistory(host, port, originalKey);
136+
if (this.state.tableTotal !== 0) {
137+
let host = this.props.node.data.host;
138+
let port = this.props.node.data.port;
139+
KeysHistoryService.addKeysHistory(
140+
host,
141+
port,
142+
originalKey
143+
);
144+
}
145+
this.setState({ searchDisable: false });
137146
}
138-
this.setState({ searchDisable: false });
139147
}
140148
);
141149
}
@@ -155,41 +163,53 @@ class HostKey extends Component {
155163
currentPage: 1,
156164
tableTotal: 0,
157165
});
158-
let redis = this.props.node.redis;
159166
let directKey = "{我~~++==>>>>们}";
160167
if (key.indexOf("*") === -1) {
161168
directKey = key;
162169
}
163-
redis.keys(directKey).then(
164-
(value) => {
165-
let pattern = key;
166-
let cursor = "0";
167-
pattern = "*" + pattern + "*";
168-
if (value !== null && value !== undefined && value.length > 0) {
169-
// 关键字的key,如果存在,显示在第一页第一行
170-
let data = [];
171-
data.push({
172-
key: key,
173-
name: key,
174-
});
175-
// 如果key存在,则添加到搜索历史记录
176-
let host = this.props.node.data.host;
177-
let port = this.props.node.data.port;
178-
KeysHistoryService.addKeysHistory(host, port, key);
179-
let tableData = [...this.state.tableData, ...data];
180-
this.setState({
181-
tableData: tableData,
182-
tableTotal: tableData.length,
183-
});
170+
let redisArr = [this.props.node.redis];
171+
if (this.props.node.data.connectType === CONNECT_TYPE.CLUSTER) {
172+
redisArr = this.props.node.redis.nodes("master");
173+
}
174+
redisArr.map((redis) => {
175+
redis.keys(directKey).then(
176+
(value) => {
177+
if (
178+
value !== null &&
179+
value !== undefined &&
180+
value.length > 0
181+
) {
182+
// 关键字的key,如果存在,显示在第一页第一行
183+
let data = [];
184+
data.push({
185+
key: key,
186+
name: key,
187+
});
188+
// 如果key存在,则添加到搜索历史记录
189+
let host = this.props.node.data.host;
190+
let port = this.props.node.data.port;
191+
KeysHistoryService.addKeysHistory(host, port, key);
192+
let tableData = [...this.state.tableData, ...data];
193+
this.setState({
194+
tableData: tableData,
195+
tableTotal: tableData.length,
196+
});
197+
}
198+
let pattern = key;
199+
let cursor = "0";
200+
pattern = "*" + pattern + "*";
201+
this.loadRedisDataByPattern(pattern, cursor, key);
202+
},
203+
(err) => {
204+
// keys 有可能被服务器禁用,所以即使失败,也继续进行loadRedisDataByPattern
205+
Log.error("searchKey error", key, err);
206+
let pattern = key;
207+
let cursor = "0";
208+
pattern = "*" + pattern + "*";
209+
this.loadRedisDataByPattern(pattern, cursor, key);
184210
}
185-
this.loadRedisDataByPattern(pattern, cursor, key);
186-
},
187-
(err) => {
188-
this.setState({ searchDisable: false });
189-
message.error("" + err);
190-
Log.error("searchKey error", key);
191-
}
192-
);
211+
);
212+
});
193213
}
194214
/**
195215
*改变页码
@@ -419,9 +439,11 @@ class HostKey extends Component {
419439
ref={this.searchInput}
420440
onSearch={this.searchKey.bind(this)}
421441
enterButton={
422-
<Button icon={<SearchOutlined />}></Button>
442+
<Button
443+
disabled={this.state.searchDisable}
444+
icon={<SearchOutlined />}
445+
></Button>
423446
}
424-
disabled={this.state.searchDisable}
425447
/>
426448
</AutoComplete>
427449
</Tooltip>

src/pages/HostKeyTree/index.js

Lines changed: 54 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import {
1616
import { DeleteTwoTone } from "@ant-design/icons";
1717
import { message } from "antd";
1818
import { SearchOutlined } from "@ant-design/icons";
19-
import { REDIS_DATA_TYPE } from "@/utils/constant";
19+
import { REDIS_DATA_TYPE, CONNECT_TYPE } from "@/utils/constant";
2020
import "@/pages/CommonCss/zebra.css";
2121
import uuid from "node-uuid";
2222
import Log from "@/services/LogService";
@@ -81,18 +81,7 @@ class HostKeyTree extends Component {
8181
componentDidMount() {
8282
// 获取配置的key分割符
8383
this.splitSign = LocaleUtils.readSystemConfig().splitSign;
84-
this.setState({
85-
treeData: [],
86-
searchDisable: true,
87-
});
88-
this.props.node.redis.select(this.props.db, (err, res) => {
89-
if (err) {
90-
message.error("" + err);
91-
Log.error("HostKeyTree componentDidMount error", err, res);
92-
return;
93-
}
94-
this.loadRedisKeysByPattern("*");
95-
});
84+
this.searchKey("*");
9685
this.props.triggerRef(this);
9786
}
9887
/**
@@ -177,52 +166,61 @@ class HostKeyTree extends Component {
177166
) {
178167
pattern = "*" + originalKey + "*";
179168
}
180-
let redis = this.props.node.redis;
181-
redis.keys(pattern).then(
182-
(res) => {
183-
this.setState({
184-
treeData: [],
185-
searchDisable: true,
186-
});
187-
let treeData = [];
188-
if (res !== null && res !== undefined && res.length !== 0) {
189-
let rootTreeMap = new Map();
190-
for (let i = 0; i < res.length; i++) {
191-
let key = res[i];
192-
let childKeyArr = key.split(this.splitSign);
193-
let childMap = rootTreeMap.get(childKeyArr[0]);
194-
if (childMap === null || childMap === undefined) {
195-
childMap = new Map();
196-
}
197-
rootTreeMap.set(childKeyArr[0], childMap);
198-
if (childKeyArr.length > 1) {
199-
this.keyArrToTreeMap(
200-
childMap,
201-
childKeyArr.slice(1, childKeyArr.length)
202-
);
203-
} else {
204-
rootTreeMap.set(
205-
childKeyArr[0] + this.splitEndSign,
206-
undefined
207-
);
169+
let redisArr = [this.props.node.redis];
170+
if (this.props.node.data.connectType === CONNECT_TYPE.CLUSTER) {
171+
redisArr = this.props.node.redis.nodes("master");
172+
}
173+
redisArr.map((redis) => {
174+
redis.keys(pattern).then(
175+
(res) => {
176+
this.setState({
177+
treeData: [],
178+
searchDisable: true,
179+
});
180+
let treeData = [];
181+
if (res !== null && res !== undefined && res.length !== 0) {
182+
let rootTreeMap = new Map();
183+
for (let i = 0; i < res.length; i++) {
184+
let key = res[i];
185+
let childKeyArr = key.split(this.splitSign);
186+
let childMap = rootTreeMap.get(childKeyArr[0]);
187+
if (childMap === null || childMap === undefined) {
188+
childMap = new Map();
189+
}
190+
rootTreeMap.set(childKeyArr[0], childMap);
191+
if (childKeyArr.length > 1) {
192+
this.keyArrToTreeMap(
193+
childMap,
194+
childKeyArr.slice(1, childKeyArr.length)
195+
);
196+
} else {
197+
rootTreeMap.set(
198+
childKeyArr[0] + this.splitEndSign,
199+
undefined
200+
);
201+
}
208202
}
203+
// 如果key存在,则添加到搜索历史记录
204+
let host = this.props.node.data.host;
205+
let port = this.props.node.data.port;
206+
KeysHistoryService.addKeysHistory(
207+
host,
208+
port,
209+
originalKey
210+
);
211+
this.treeMapToTreeData(rootTreeMap, treeData, "");
209212
}
210-
// 如果key存在,则添加到搜索历史记录
211-
let host = this.props.node.data.host;
212-
let port = this.props.node.data.port;
213-
KeysHistoryService.addKeysHistory(host, port, originalKey);
214-
this.treeMapToTreeData(rootTreeMap, treeData, "");
213+
this.setState({
214+
treeData: treeData,
215+
searchDisable: false,
216+
});
217+
},
218+
(err) => {
219+
message.error("loadRedisKeysByPattern error" + err);
220+
Log.error("HostKeyTree loadRedisKeysByPattern error", err);
215221
}
216-
this.setState({
217-
treeData: treeData,
218-
searchDisable: false,
219-
});
220-
},
221-
(err) => {
222-
message.error("loadRedisKeysByPattern error" + err);
223-
Log.error("HostKeyTree loadRedisKeysByPattern error", err);
224-
}
225-
);
222+
);
223+
});
226224
}
227225
/**
228226
*搜索key

src/utils/constant.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ export const REDIS_DATA_TYPE = {
2626
// redis 数据显示组件使用
2727
export const REDIS_DATA_SHOW = {
2828
// 批量获取数据的大小
29-
FETCH_DATA_SIZE: 10000,
29+
FETCH_DATA_SIZE: 5000,
3030
// 查询最大的条数
31-
MAX_SEARCH_DATA_SIZE: 1000,
31+
MAX_SEARCH_DATA_SIZE: 10000,
3232
// redis处理返回的成功的值
3333
REDIS_HANDLE_SUCCESS: 1,
3434
// redis处理返回的失败的值

0 commit comments

Comments
 (0)