| 874 | } |
| 875 | |
| 876 | void WorkThread::doBatchScanKeyWork() |
| 877 | { |
| 878 | if(!prepare()) { |
| 879 | emit runError(_taskMsg->_taskid,_string); |
| 880 | emit finishWork(_taskMsg->_taskid); |
| 881 | return; |
| 882 | } |
| 883 | |
| 884 | if(cancle()) |
| 885 | return; |
| 886 | |
| 887 | _sendMsg = *_taskMsg; |
| 888 | _sendMsg._list.clear(); |
| 889 | QStringList vKeyPattern = _taskMsg->_keyPattern.split(_taskMsg->_key, QString::SkipEmptyParts); |
| 890 | for(int i = 0; i < vKeyPattern.size(); ++i) { |
| 891 | _sendMsg._key = vKeyPattern[i]; |
| 892 | do { |
| 893 | if(_redisClient->scan(vKeyPattern[i], _respValue, _cursor, BATCH_SCAN_NUM)) { |
| 894 | _cursor = _respValue._arrayValue[0]._stringValue.toLongLong(); |
| 895 | _sendMsg._sequence = _respValue._arrayValue[1]._arrayValue.size(); |
| 896 | emit sendData(_sendMsg); |
| 897 | } else { |
| 898 | _cursor = 0; |
| 899 | } |
| 900 | _respValue.init(); |
| 901 | if(cancle()) |
| 902 | return; |
| 903 | } while(_cursor); |
| 904 | if(cancle()) |
| 905 | return; |
| 906 | } |
| 907 | |
| 908 | destroy(); |
| 909 | } |
| 910 | |
| 911 | void WorkThread::doBatchExportWork(int taskid) { |
| 912 | if(!prepare()) { |