php redis правильное удаление множества ключей

Пытаюсь разобраться с корректным удалением ключей по маске (да и вообще с мульти удалением). Вот есть у меня функция в классе

public function keysDrop($prefix)
{
    $keys = $this->api->redis->r->keys($prefix."*");
    
    foreach($keys as $key)
    {
        $this->api->redis->r->del($key);
    }
}

все бы хорошо, но иногда случается что по какой то причине ключи не сбрасываются, не могу отловить этот момент, честно говоря, но складывается впечатление, что когда несколько пользователей запускают скрипт где есть эта функция - у одного из них она может не сработать, т.е. ключи не сбросятся. Я стал читать в гуглах и яндексах - немного запутался, вроде как говорят что получать все ключи по маске функцией key не есть правильно, приплетают туда функцию scan - она еще больше сумятицы вносит в понимание. Подскажите, как же правильно и главное - гарантировано, удалять ключи по маске, без использования консольных команд, я там видел такие решения, но интересует средствами php.

Или может как то блокировать базу чтобы один отработал, затем второй за ним пошел?


Ответы (0 шт):