MCPcopy Create free account
hub / github.com/cc20110101/RedisView / doBatchDelKeyWork

Method doBatchDelKeyWork

src/RedisView/Public/WorkThread.cpp:826–874  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

824}
825
826void WorkThread::doBatchDelKeyWork() {
827
828 if(!prepare()) {
829 emit runError(_taskMsg->_taskid,_string);
830 emit finishWork(_taskMsg->_taskid);
831 return;
832 }
833
834 if(cancle())
835 return;
836
837 _sendMsg = *_taskMsg;
838 _sendMsg._list.clear();
839 qlonglong llret;
840 QString key;
841 int keyNum;
842 QStringList vKeyPattern = _taskMsg->_keyPattern.split(_taskMsg->_key, QString::SkipEmptyParts);
843 for(int i = 0; i < vKeyPattern.size(); ++i) {
844 _sendMsg._key = vKeyPattern[i];
845 do {
846 if(_redisClient->scan(vKeyPattern[i], _respValue, _cursor, BATCH_SCAN_NUM)) {
847 _cursor = _respValue._arrayValue[0]._stringValue.toLongLong();
848 key.clear();
849 keyNum = 0;
850 for(int j = 0; j < _respValue._arrayValue[1]._arrayValue.size(); ++j) {
851 key = QString(_respValue._arrayValue[1]._arrayValue[j]._stringValue);
852 if(!_redisClient->del(key, llret)) {
853 llret = 0;
854 emit runError(_taskMsg->_taskid, QString("delete key %1 failed").arg(key));
855 continue;
856 }
857 keyNum += llret;
858 }
859 _sendMsg._sequence = keyNum;
860 emit sendData(_sendMsg);
861 } else {
862 _cursor = 0;
863 }
864 _respValue.init();
865 _sendMsg._list.clear();
866 if(cancle())
867 return;
868 } while(_cursor);
869 if(cancle())
870 return;
871 }
872
873 destroy();
874}
875
876void WorkThread::doBatchScanKeyWork()
877{

Callers

nothing calls this directly

Calls 4

scanMethod · 0.80
clearMethod · 0.45
delMethod · 0.45
initMethod · 0.45

Tested by

no test coverage detected