bug #30515 [Cache] Only delete one key at a time when on Predis + Cluster (andrerom)
This PR was merged into the 3.4 branch.
Discussion
----------
[Cache] Only delete one key at a time when on Predis + Cluster
| Q | A
| ------------- | ---
| Branch? | 3.4
| Bug fix? | yes
| New feature? | no
| BC breaks? | no
| Deprecations? | no
| Tests pass? | yes
| License | MIT
Makes sure deletes when on Predis Cluster is only done one by one as it's not able to send the keys to right cluster node like RedisCluster can.
_This is backport of logic from 4.x to fix this. With one tweak; make sure to only do this when on cluster so not all Predis users pay the penalty for it._
Commits
-------
f5ece20a83
[Cache] Only delete one key at a time when on Predis + Cluster
This commit is contained in:
commit
21d01973f7
@ -272,7 +272,17 @@ trait RedisTrait
|
|||||||
*/
|
*/
|
||||||
protected function doDelete(array $ids)
|
protected function doDelete(array $ids)
|
||||||
{
|
{
|
||||||
if ($ids) {
|
if (!$ids) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($this->redis instanceof \Predis\Client && $this->redis->getConnection() instanceof ClusterInterface) {
|
||||||
|
$this->pipeline(function () use ($ids) {
|
||||||
|
foreach ($ids as $id) {
|
||||||
|
yield 'del' => [$id];
|
||||||
|
}
|
||||||
|
})->rewind();
|
||||||
|
} else {
|
||||||
$this->redis->del($ids);
|
$this->redis->del($ids);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user