@@ -69,7 +69,7 @@ class HostKey extends Component {
6969 this . props . node . redis . select ( this . props . db , ( err , res ) => {
7070 if ( err ) {
7171 message . error ( "" + err ) ;
72- Log . error ( "HostKey componentDidMount error" , err , res ) ;
72+ Log . error ( "[cmd= HostKey] componentDidMount error" , err , res ) ;
7373 return ;
7474 }
7575 this . loadRedisDataByPattern ( pattern , cursor , "*" ) ;
@@ -102,7 +102,13 @@ class HostKey extends Component {
102102 if ( err ) {
103103 this . setState ( { searchDisable : false } ) ;
104104 message . error ( "" + err ) ;
105- Log . error ( "HostKey loadRedisDataByPattern error" , err ) ;
105+ Log . error (
106+ "[cmd=HostKey] loadRedisDataByPattern error" ,
107+ pattern ,
108+ cursor ,
109+ existKey ,
110+ err
111+ ) ;
106112 return ;
107113 }
108114 let data = [ ] ;
@@ -137,44 +143,46 @@ class HostKey extends Component {
137143 key = "*" ;
138144 }
139145 let redis = this . props . node . redis ;
140- redis . get ( key ) . then (
141- ( res ) => {
142- this . setState ( {
143- tableData : [ ] ,
144- searchDisable : true ,
145- currentPage : 1 ,
146- tableTotal : 0 ,
146+ // 使用 scan 的原因:有些redis server禁用keys。
147+ // COUNT 使用 10000000 的原因:数据量比较大的时候,COUNT 太小有可能搜索不到key。
148+ redis . scan ( 0 , "MATCH" , key , "COUNT" , 10000000 , ( err , res ) => {
149+ if ( err ) {
150+ this . setState ( { searchDisable : false } ) ;
151+ message . error ( "" + err ) ;
152+ Log . error ( "[cmd=HostKey] searchKey error" , key , err ) ;
153+ return ;
154+ }
155+ this . setState ( {
156+ tableData : [ ] ,
157+ searchDisable : true ,
158+ currentPage : 1 ,
159+ tableTotal : 0 ,
160+ } ) ;
161+ let pattern = key ;
162+ let cursor = "0" ;
163+ pattern = "*" + pattern + "*" ;
164+ if (
165+ res !== null &&
166+ res !== undefined &&
167+ res [ 1 ] . length > 0 &&
168+ key !== "*"
169+ ) {
170+ // 关键字的key,如果存在,显示在第一页第一行
171+ let data = [ ] ;
172+ data . push ( {
173+ key : key ,
174+ name : key ,
147175 } ) ;
148- let pattern = key ;
149- let cursor = "0" ;
150- pattern = "*" + pattern + "*" ;
151- // 关键字的key,如果存在,必然显示在第一页第一行
152- if (
153- res !== null &&
154- res !== undefined &&
155- res . length !== 0 &&
156- key !== "*"
157- ) {
158- let data = [ ] ;
159- data . push ( {
160- key : key ,
161- name : key ,
176+ if ( data . length !== 0 ) {
177+ let tableData = [ ...this . state . tableData , ...data ] ;
178+ this . setState ( {
179+ tableData : tableData ,
180+ tableTotal : tableData . length ,
162181 } ) ;
163- if ( data . length !== 0 ) {
164- let tableData = [ ...this . state . tableData , ...data ] ;
165- this . setState ( {
166- tableData : tableData ,
167- tableTotal : tableData . length ,
168- } ) ;
169- }
170182 }
171- this . loadRedisDataByPattern ( pattern , cursor , key ) ;
172- } ,
173- ( err ) => {
174- message . error ( "" + err ) ;
175- Log . error ( "HostKey refreshValue error" , err ) ;
176183 }
177- ) ;
184+ this . loadRedisDataByPattern ( pattern , cursor , key ) ;
185+ } ) ;
178186 }
179187 /**
180188 *改变页码
@@ -260,95 +268,99 @@ class HostKey extends Component {
260268 }
261269 let redis = this . props . node . redis ;
262270 let key = form . getFieldValue ( "key" ) ;
263- redis . get ( key ) . then (
264- ( value0 ) => {
265- if ( value0 !== null ) {
266- message . error (
267- intl . get ( "HostKey.key.exist" ) + ", key > " + key
271+ // 使用 scan 的原因:有些redis server禁用keys。
272+ // COUNT 使用 10000000 的原因:数据量比较大的时候,COUNT 太小有可能搜索不到key。
273+ redis . scan ( 0 , "MATCH" , key , "COUNT" , 10000000 , ( err , res ) => {
274+ if ( err ) {
275+ message . error ( "" + err ) ;
276+ Log . error ( "[cmd=HostKey] createKey error" , key , err ) ;
277+ return ;
278+ }
279+ if ( res !== null && res !== undefined && res [ 1 ] . length > 0 ) {
280+ message . error ( intl . get ( "HostKey.key.exist" ) + ", key > " + key ) ;
281+ } else {
282+ let keyType = form . getFieldValue ( "keyType" ) ;
283+ if ( keyType === REDIS_DATA_TYPE . STRING ) {
284+ redis . set ( key , "" ) . then (
285+ ( value ) => {
286+ this . okCreateKeyMadalSuccess ( key , keyType ) ;
287+ } ,
288+ ( err ) => {
289+ message . error ( "" + err ) ;
290+ Log . error (
291+ "[cmd=HostKey] okCreateKeyMadal string error" ,
292+ key ,
293+ err
294+ ) ;
295+ }
296+ ) ;
297+ } else if ( keyType === REDIS_DATA_TYPE . ZSET ) {
298+ redis . zadd ( key , 1 , "default-member" ) . then (
299+ ( value ) => {
300+ this . okCreateKeyMadalSuccess ( key , keyType ) ;
301+ } ,
302+ ( err ) => {
303+ message . error ( "" + err ) ;
304+ Log . error (
305+ "[cmd=HostKey] okCreateKeyMadal zset error" ,
306+ key ,
307+ err
308+ ) ;
309+ }
310+ ) ;
311+ } else if ( keyType === REDIS_DATA_TYPE . SET ) {
312+ redis . sadd ( key , "default-member" ) . then (
313+ ( value ) => {
314+ this . okCreateKeyMadalSuccess ( key , keyType ) ;
315+ } ,
316+ ( err ) => {
317+ message . error ( "" + err ) ;
318+ Log . error (
319+ "[cmd=HostKey] okCreateKeyMadal set error" ,
320+ key ,
321+ err
322+ ) ;
323+ }
324+ ) ;
325+ } else if ( keyType === REDIS_DATA_TYPE . HASH ) {
326+ redis . hset ( key , "default-member" , "default-value" ) . then (
327+ ( value ) => {
328+ this . okCreateKeyMadalSuccess ( key , keyType ) ;
329+ } ,
330+ ( err ) => {
331+ message . error ( "" + err ) ;
332+ Log . error (
333+ "[cmd=HostKey] okCreateKeyMadal hash error" ,
334+ key ,
335+ err
336+ ) ;
337+ }
338+ ) ;
339+ } else if ( keyType === REDIS_DATA_TYPE . LIST ) {
340+ redis . lpush ( key , "default-member" ) . then (
341+ ( value ) => {
342+ this . okCreateKeyMadalSuccess ( key , keyType ) ;
343+ } ,
344+ ( err ) => {
345+ message . error ( "" + err ) ;
346+ Log . error (
347+ "[cmd=HostKey] okCreateKeyMadal list error" ,
348+ key ,
349+ err
350+ ) ;
351+ }
268352 ) ;
269- } else {
270- let keyType = form . getFieldValue ( "keyType" ) ;
271- if ( keyType === REDIS_DATA_TYPE . STRING ) {
272- redis . set ( key , "" ) . then (
273- ( value ) => {
274- this . okCreateKeyMadalSuccess ( key , keyType ) ;
275- } ,
276- ( err ) => {
277- message . error ( "" + err ) ;
278- Log . error (
279- "HostKey okCreateKeyMadal string error" ,
280- err
281- ) ;
282- }
283- ) ;
284- } else if ( keyType === REDIS_DATA_TYPE . ZSET ) {
285- redis . zadd ( key , 1 , "default-member" ) . then (
286- ( value ) => {
287- this . okCreateKeyMadalSuccess ( key , keyType ) ;
288- } ,
289- ( err ) => {
290- message . error ( "" + err ) ;
291- Log . error (
292- "HostKey okCreateKeyMadal zset error" ,
293- err
294- ) ;
295- }
296- ) ;
297- } else if ( keyType === REDIS_DATA_TYPE . SET ) {
298- redis . sadd ( key , "default-member" ) . then (
299- ( value ) => {
300- this . okCreateKeyMadalSuccess ( key , keyType ) ;
301- } ,
302- ( err ) => {
303- message . error ( "" + err ) ;
304- Log . error (
305- "HostKey okCreateKeyMadal set error" ,
306- err
307- ) ;
308- }
309- ) ;
310- } else if ( keyType === REDIS_DATA_TYPE . HASH ) {
311- redis . hset ( key , "default-member" , "default-value" ) . then (
312- ( value ) => {
313- this . okCreateKeyMadalSuccess ( key , keyType ) ;
314- } ,
315- ( err ) => {
316- message . error ( "" + err ) ;
317- Log . error (
318- "HostKey okCreateKeyMadal hash error" ,
319- err
320- ) ;
321- }
322- ) ;
323- } else if ( keyType === REDIS_DATA_TYPE . LIST ) {
324- redis . lpush ( key , "default-member" ) . then (
325- ( value ) => {
326- this . okCreateKeyMadalSuccess ( key , keyType ) ;
327- } ,
328- ( err ) => {
329- message . error ( "" + err ) ;
330- Log . error (
331- "HostKey okCreateKeyMadal list error" ,
332- err
333- ) ;
334- }
335- ) ;
336- }
337- let tableData = [
338- { key : key , name : key } ,
339- ...this . state . tableData ,
340- ] ;
341- this . setState ( {
342- tableData : tableData ,
343- tableTotal : tableData . length ,
344- } ) ;
345353 }
346- } ,
347- ( err ) => {
348- message . error ( "" + err ) ;
349- Log . error ( "HostKey createKey error" , err ) ;
354+ let tableData = [
355+ { key : key , name : key } ,
356+ ...this . state . tableData ,
357+ ] ;
358+ this . setState ( {
359+ tableData : tableData ,
360+ tableTotal : tableData . length ,
361+ } ) ;
350362 }
351- ) ;
363+ } ) ;
352364 } ;
353365 /**
354366 *创建KEY成功,关闭窗口,调用父组件创建key
0 commit comments