/** * In addition to all writes being stored to $local, we'll also * keep get() values around ;). * * {@inheritdoc} */ public function getMulti(array $keys, array &$tokens = null) { $values = $this->transaction->getMulti($keys, $tokens); $missing = array_diff_key($values, $this->local->getMulti($keys)); if (!empty($missing)) { $this->local->setMulti($missing); } return $values; }
/** * {@inheritdoc} */ public function deleteMulti(array $keys) { // check the current values to see if they currently exists, so we can // properly return true/false as would be expected from KeyValueStore $items = $this->getMulti($keys); $success = array(); foreach ($keys as $key) { $success[$key] = array_key_exists($key, $items); } // only attempt to store those that we've deleted successfully to local $values = array_intersect_key($success, array_flip($keys)); if (empty($values)) { return array(); } // mark all as expired in local cache (see comment in delete()) $this->local->setMulti($values, -1); $this->defer->deleteMulti(array_keys($values)); return $success; }