int redis_key::scan(int cursor, std::vector<string>& out, const char* pattern /* = NULL */, const size_t* count /* = NULL */) { if (cursor < 0) return -1; size_t size; const redis_result** children = scan_keys("SCAN", NULL, cursor, size, pattern, count); if (children == NULL) return cursor; const redis_result* rr; string key_buf(128); // out.clear(); out.reserve(out.size() + size); for (size_t i = 0; i < size; i++) { rr = children[i]; rr->argv_to_string(key_buf); out.push_back(key_buf); key_buf.clear(); } return cursor; }
void XdbReplaceCompress(Xdb *xdb, String *key, Buffer *data) { Buffer key_buf((const uint8_t*) key->Value(), strlen(key->Value()) + 1); static Buffer compress_buf; CompressBufferInUse(data, &compress_buf); Buffer final_buf(compress_buf.base, compress_buf.pos - compress_buf.base); xdb->Replace(&key_buf, &final_buf); compress_buf.Reset(); }
bool XdbFindUncompressed(Xdb *xdb, String *key, Buffer *data) { Buffer key_buf((const uint8_t*) key->Value(), strlen(key->Value()) + 1); static Buffer compress_buf; bool res = xdb->Find(&key_buf, &compress_buf); if (res) UncompressBufferInUse(&compress_buf, data); compress_buf.Reset(); return res; }