lithium\storage\cache\adapter\Redis::write()
Implements
lithium\storage\cache\Adapter::write()
Write values to the cache. All items to be cached will receive an
expiration time of $expiry
.
Parameters
-
array
$keys
Key/value pairs with keys to uniquely identify the to-be-cached item.
-
string|integer
$expiry
A
strtotime()
compatible cache time or TTL in seconds. To persist an item use\lithium\storage\Cache::PERSIST
.
Returns
booleantrue
on successful write, false
otherwise.
Source
public function write(array $keys, $expiry = null) {
$expiry = $expiry || $expiry === Cache::PERSIST ? $expiry : $this->_config['expiry'];
if (!$expiry || $expiry === Cache::PERSIST) {
$ttl = null;
} elseif (is_int($expiry)) {
$ttl = $expiry;
} else {
$ttl = strtotime($expiry) - time();
}
if (count($keys) > 1) {
if (!$ttl) {
return $this->connection->mset($keys);
}
$transaction = $this->connection->multi();
foreach ($keys as $key => $value) {
if (!$this->connection->setex($key, $ttl, $value)) {
$transaction->discard();
return false;
}
}
return $transaction->exec() === array_fill(0, count($keys), true);
}
$key = key($keys);
$value = current($keys);
if (!$ttl) {
return $this->connection->set($key, $value);
}
return $this->connection->setex($key, $ttl, $value);
}