diff --git a/src/Symfony/Component/Cache/Adapter/RedisAdapter.php b/src/Symfony/Component/Cache/Adapter/RedisAdapter.php index f0234589e1cb8..43aa557fa52f3 100644 --- a/src/Symfony/Component/Cache/Adapter/RedisAdapter.php +++ b/src/Symfony/Component/Cache/Adapter/RedisAdapter.php @@ -93,22 +93,24 @@ protected function doSave(array $values, $lifetime) $serialized = array(); $failed = array(); - foreach ($values as $id => $v) { + foreach ($values as $id => $value) { try { - $serialized[$id] = serialize($v); + $serialized[$id] = serialize($value); } catch (\Exception $e) { $failed[] = $id; } } - if (!$this->redis->mSet($serialized)) { - return false; - } - - if ($lifetime >= 1) { - foreach ($serialized as $id => $v) { - $this->redis->expire($id, $lifetime); + if ($lifetime > 0) { + $pipe = $this->redis->multi(\Redis::PIPELINE); + foreach ($serialized as $id => $value) { + $pipe->setEx($id, $lifetime, $value); } + if (!$pipe->exec()) { + return false; + } + } elseif (!$this->redis->mSet($serialized)) { + return false; } return $failed;