Esempio n. 1
0
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;
}