Redisではキーにワイルドカードを使って一括削除するコマンドがありません。
今回はLaravel5.8でRedisのキーをワイルドカードを使って、一括削除する方法を共有します。
一括削除する方法(prefixあり)
$keyPattern = 'hogehoge_*';
$keys = array_map(function ($key) {
return str_replace(config('database.redis.options.prefix'), '', $key);
}, Redis::keys($keyPattern));
if (!empty($keys)) {
Redis::del($keys);
}
複数のコネクションを使っていてそれぞれprefixが違う場合は、
config('database.redis.options.prefix')
の部分を適宜修正してください。
Laravel5.8からはデフォルトでprefixが指定されているので上記のprefixありで実行してください。
prefixを使っていない場合はこちらでもOK
Redis::del(Redis::keys('hogehoge_*'));
Laravel5.7はデフォルトだとprefixが指定されていないので、こちらでOK。
今回はリリース時の一部キャッシュのクリアでしたので、
php artisan tinker
で上記のコードを実行しました。
参考URL