Return value will be an associative array in [key => status] form, where
status is a boolean true for success, or false for failure.
setMulti is preferred over multiple individual set operations as you'll
set them all in 1 request.
/** * {@inheritdoc} */ public function setMultiple($items, $ttl = null) { if ($items instanceof Traversable) { $items = iterator_to_array($items); } $keys = array_keys($items); if (!is_array($keys) || array_filter($keys, 'is_string') !== $keys) { throw new InvalidArgumentException('Invalid keys: ' . serialize($keys) . '. Must be array of strings.'); } $ttl = $this->ttl($ttl); $success = $this->store->setMulti($items, $ttl); return !in_array(false, $success); }
/** * {@inheritdoc} */ public function commit() { $deferred = array(); foreach ($this->deferred as $key => $item) { if ($item->isExpired()) { // already expired: don't even save it continue; } // setMulti doesn't allow to set expiration times on a per-item basis, // so we'll have to group our requests per expiration date $expire = $item->getExpiration(); $deferred[$expire][$item->getKey()] = $item->get(); } // setMulti doesn't allow to set expiration times on a per-item basis, // so we'll have to group our requests per expiration date $success = true; foreach ($deferred as $expire => $items) { $status = $this->store->setMulti($items, $expire); $success &= !in_array(false, $status); unset($deferred[$expire]); } return (bool) $success; }
/** * {@inheritdoc} */ public function setMulti(array $items, $expire = 0) { return $this->cache->setMulti($items, $expire); }