Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 05b5893

Browse filesBrowse files
[Cache] Dont use Redis connection when not required
1 parent f2228d5 commit 05b5893
Copy full SHA for 05b5893

File tree

Expand file treeCollapse file tree

2 files changed

+23
-14
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+23
-14
lines changed

‎src/Symfony/Component/Cache/Adapter/AbstractAdapter.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Cache/Adapter/AbstractAdapter.php
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -227,7 +227,7 @@ public function deleteItems(array $keys)
227227

228228
$ok = true;
229229

230-
// When bulk-save failed, retry each item individually
230+
// When bulk-delete failed, retry each item individually
231231
foreach ($ids as $key => $id) {
232232
try {
233233
$e = null;

‎src/Symfony/Component/Cache/Adapter/RedisAdapter.php

Copy file name to clipboardExpand all lines: src/Symfony/Component/Cache/Adapter/RedisAdapter.php
+22-13Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -19,30 +19,34 @@
1919
class RedisAdapter extends AbstractAdapter
2020
{
2121
private $redis;
22+
private $namespace;
2223

2324
public function __construct(\Redis $redisConnection, $namespace = '', $defaultLifetime = 0)
2425
{
25-
$this->redis = $redisConnection;
26-
2726
if (preg_match('#[^-+_.A-Za-z0-9]#', $namespace, $match)) {
2827
throw new InvalidArgumentException(sprintf('RedisAdapter namespace contains "%s" but only characters in [-+_.A-Za-z0-9] are allowed.', $match[0]));
2928
}
29+
$this->redis = $redisConnection;
30+
$this->redis->setOption(\Redis::OPT_PREFIX, $namespace);
31+
$this->namespace = $namespace;
3032

31-
parent::__construct($namespace, $defaultLifetime);
33+
parent::__construct('', $defaultLifetime);
3234
}
3335

3436
/**
3537
* {@inheritdoc}
3638
*/
3739
protected function doFetch(array $ids)
3840
{
39-
$values = $this->redis->mget($ids);
40-
$index = 0;
41-
$result = [];
42-
43-
foreach ($ids as $id) {
44-
if (false !== $value = $values[$index++]) {
45-
$result[$id] = unserialize($value);
41+
$result = array();
42+
43+
if ($ids) {
44+
$values = $this->redis->mget($ids);
45+
$index = 0;
46+
foreach ($ids as $id) {
47+
if (false !== $value = $values[$index++]) {
48+
$result[$id] = unserialize($value);
49+
}
4650
}
4751
}
4852

@@ -62,14 +66,14 @@ protected function doHave($id)
6266
*/
6367
protected function doClear($namespace)
6468
{
65-
if (!isset($namespace[0])) {
69+
if (!isset($this->namespace[0])) {
6670
$this->redis->flushDB();
6771
} else {
6872
// As documented in Redis documentation (http://redis.io/commands/keys) using KEYS
6973
// can hang your server when it is executed against large databases (millions of items).
7074
// Whenever you hit this scale, it is advised to deploy one Redis database per cache pool
7175
// instead of using namespaces, so that the above FLUSHDB is used instead.
72-
$this->redis->eval(sprintf("local keys=redis.call('KEYS','%s*') for i=1,#keys,5000 do redis.call('DEL',unpack(keys,i,math.min(i+4999,#keys))) end", $namespace));
76+
$this->redis->eval(sprintf("local keys=redis.call('KEYS','%s*') for i=1,#keys,5000 do redis.call('DEL',unpack(keys,i,math.min(i+4999,#keys))) end", $this->namespace));
7377
}
7478

7579
return true;
@@ -80,7 +84,9 @@ protected function doClear($namespace)
8084
*/
8185
protected function doDelete(array $ids)
8286
{
83-
$this->redis->del($ids);
87+
if ($ids) {
88+
$this->redis->del($ids);
89+
}
8490

8591
return true;
8692
}
@@ -101,6 +107,9 @@ protected function doSave(array $values, $lifetime)
101107
}
102108
}
103109

110+
if (!$serialized) {
111+
return $failed;
112+
}
104113
if ($lifetime > 0) {
105114
$pipe = $this->redis->multi(\Redis::PIPELINE);
106115
foreach ($serialized as $id => $value) {

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.