通过统计网站看到很多人进来搜索词意思是要设置前缀,而不是清除指定前缀的内容,专门追加了这块内容。
设置存储前缀
方法一、
.env
方法二、
config\database.php
1 2 3 4 5 6 7
| 'redis' => [ ... 'options' => [ 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_').'_database_'), 'prefix' => '', ],
|
如果修改后没有修改记得清除配置缓存
1
| $ php artisan config:clear
|
清除指定前缀
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| use Illuminate\Support\Facades\Redis;
if(!function_exists('redis_clear')) {
function redis_clear($prefix) { $keys = Redis::keys($prefix . ':*');
$_prefix = config('database.redis.options.prefix');
foreach($keys as $key) { Redis::del(str_replace($_prefix, '', $key)); }
return true; }
function redis_clear($prefix) { $keys = Redis::keys($prefix . ':*');
$_prefix = config('database.redis.options.prefix');
$keys = array_chunk($keys, 1000);
foreach($keys as $_keys) { Redis::pipeline(function($pipe) use($_keys, $_prefix) { foreach($_keys as $key) { $pipe->del(str_replace($_prefix, '', $key)); } }); }
return true; } }
|
对两个版本进行测试,对相同 10W 条数据进行删除,遍历版耗时 15 秒,管道版耗时 1.6 秒,差不多十倍的差距。