* 将集合之间的差集存储在指定的destkey集合中,如果destkey集合已经存在,则将其覆盖。 * @param[in] destkey 目的集合键 * @param[in] keys 要加入目的集合的集合key,多个可空格分割 * @param[out] llRet 结果集中的元素数量 * @return 成功true,失败false * @see * @note */
| 3411 | * @note |
| 3412 | */ |
| 3413 | bool RedisClient::sdiffstore(const QString & destkey, const QString & keys, qlonglong & llRet) { |
| 3414 | _sErrorInfo.clear(); |
| 3415 | if(destkey.trimmed().isEmpty()) { |
| 3416 | _sErrorInfo = "destkey is empty"; |
| 3417 | return false; |
| 3418 | } |
| 3419 | if(keys.trimmed().isEmpty()) { |
| 3420 | _sErrorInfo = "keys is empty"; |
| 3421 | return false; |
| 3422 | } |
| 3423 | |
| 3424 | _vCmdList.clear(); |
| 3425 | _vCmdList.push_back("SDIFFSTORE"); |
| 3426 | _vCmdList.push_back(destkey); |
| 3427 | _vCmdList.push_back(keys); |
| 3428 | |
| 3429 | _cmdResult = command(_vCmdList); |
| 3430 | if(_cmdResult[0] == '-') { |
| 3431 | if(parseRespError(_cmdResult,_sValue)) |
| 3432 | _sErrorInfo = _sValue; |
| 3433 | else |
| 3434 | _sErrorInfo = "parser resp error info failed"; |
| 3435 | _bRet = false; |
| 3436 | } else if(_cmdResult[0] == ':') { |
| 3437 | if(parseRespInteger(_cmdResult,llRet)) { |
| 3438 | _bRet = true; |
| 3439 | } else { |
| 3440 | _sErrorInfo = "parser resp integer info failed"; |
| 3441 | _bRet = false; |
| 3442 | } |
| 3443 | } else { |
| 3444 | _bRet = false; |
| 3445 | _sErrorInfo = QString("parser resp type failed:") + _cmdResult[0]; |
| 3446 | } |
| 3447 | return _bRet; |
| 3448 | } |
| 3449 | |
| 3450 | /** |
| 3451 | * 将给定集合之间的交集存储在指定的destkey集合中。如果指定的destkey集合已经存在,则将其覆盖 |