Я использую кеш Redis в Laravel. У меня есть процесс, который получает блокировку:
Cache::lock('myKey')->get()
Этот процесс был прерван до снятия блокировки.
Я попытался запустить php artisan cache:clear, чтобы снять блокировку, очистив весь кеш, но это не сработало.
Если я повторно запущу Cache::lock('myKey')->get(), он вернется false, потому что он все еще заблокирован.
Кроме того, запуск Cache::lock('myKey')->release() не работает, поскольку снять блокировку может только процесс, который его создал. Я мог бы запустить Cache::lock('myKey')->forceRelease(), чтобы снять блокировку, не уважая владельца процесса. Но на самом деле мне нужно открыть много замков.
Как снять все блокировки? Почему php artisan cache:clear не работает?






Из-за того, как работает Redis и как пространства имен Laravel работают с блокировками Redis php artisan cache:clear или Cache::flush(), они не снимают блокировки.
Чтобы снять все блокировки, вам нужно запустить redis-cli, а затем ввести FLUSHALL. Затем введите exit, чтобы выйти из Redis Cli.
$ redis-cli
127.0.0.1:6379> FLUSHALL
OK
127.0.0.1:6379> exit
Если вы не хотите использовать
redis-cliLaravel предоставляет фасад Redis, который позволяет передавать необработанные команды непосредственно в Redis.