MCRouter::flushAll

Flush all key/value pairs

public function flushAll(
  int $delay = 0,
): Awaitable<void>;

Parameters

  • int $delay = 0 - Amount of time to delay before flush

Returns

Examples

The following example shows how to use MCRouter::flushAll to basically flush out the memcached server of all keys and values.

It is imperative to note that you must manually construct the MCRouter instance passing 'enable_flush_cmd' => true as one of your options; otherwise a command disabled exception will be thrown. In other words, you cannot use MCRouter::createSimple() when using flushAll.

You can add an optional delay time in seconds to your call to flushAll as well.

function construct_mcrouter(): \MCRouter {
  $servers = Vector {\getenv('HHVM_TEST_MCROUTER')};
  // For many use cases, calling MCRouter::createSimple($servers) would
  // suffice here. But this shows you how to explicitly create the configuration
  // options for creating an instance of MCRouter
  $options = darray[
    'config_str' => \json_encode(
      darray[
        'pools' => darray[
          'P' => darray[
            'servers' => $servers,
          ],
        ],
        'route' => 'PoolRoute|P',
      ],
    ),
    'enable_flush_cmd' => true, // Need this in order to use flushAll
  ];
  $mc = new \MCRouter($options); // could also pass a persistence id string here
  \var_dump($mc is \MCRouter);
  return $mc;
}

async function set_value(
  \MCRouter $mc,
  string $key,
  string $value,
): Awaitable<void> {
  // can also pass optional int flags and int expiration time (in seconds)
  await $mc->set($key, $value);
}

async function del_key(\MCRouter $mc, string $key): Awaitable<void> {
  // can also pass optional int flags and int expiration time (in seconds)
  await $mc->del($key);
}

async function flush(\MCRouter $mc): Awaitable<void> {
  await $mc->flushAll(); // can add an optional delay time in seconds
}

<<__EntryPoint>>
async function run(): Awaitable<void> {
  $mc = construct_mcrouter();
  $unique_key = \str_shuffle('ABCDEFGHIJKLMN');
  await set_value($mc, $unique_key, "Hi");
  $val = await $mc->get($unique_key);
  \var_dump($val);
  await del_key($mc, $unique_key);
  await flush($mc);
  try {
    $val = await $mc->get($unique_key);
    \var_dump($val); // Won't get here because exception will be thrown
  } catch (\MCRouterException $ex) {
    \var_dump($ex->getMessage()); // There are no more keys/values since flush
  }
}
```.hhvm.expectf
bool(true)
string(2) "Hi"
string(38) "get failed with result mc_res_notfound"
```.example.hhvm.out
bool(true)
string(2) "Hi"
string(38) "get failed with result mc_res_notfound"
```.skipif
\Hack\UserDocumentation\API\Examples\MCRouter\skipif();