如何使用命令行清除laravel中的缓存?

Jay*_*len 12 caching laravel laravel-5 artisan laravel-5.2

Redis用来缓存Laravel 5.2中的查询/路由.

我有3个环境在同一个Web服务器上运行,即"生产","暂存"和"开发".

对于每个环境,我设置了不同的缓存prefix值,以允许我将缓存链接到不同的环境.

config/cache.php文件中我改变了行

'prefix' => 'laravel',
Run Code Online (Sandbox Code Playgroud)

'prefix' => ENV('CACHE_PREFIX', 'laravel'),
Run Code Online (Sandbox Code Playgroud)

然后在我的.env文件中,我为每个环境添加了这样的前缀

对于开发

CACHE_PREFIX="LaravelDev"
Run Code Online (Sandbox Code Playgroud)

用于分期

CACHE_PREFIX="LaravelStaging"
Run Code Online (Sandbox Code Playgroud)

用于生产

CACHE_PREFIX="LaravelProduction"
Run Code Online (Sandbox Code Playgroud)

我知道我可以像这样从命令行清除缓存

php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)

但上面的代码将清除所有环境的缓存.

我只想清除"LaravelDev"的缓存而只留下"LaravelStaging"和"LaravelProduction"

如何清除特定环境的缓存?

Jun*_*ior 17

cache:clear 命令将删除与数据库连接关联的所有缓存.

如果要将同一Redis服务器与多个实例一起使用,则可Redis以为每个实例使用不同的数据库.

.env文件中,您可以添加以下内容

适合您的生产环境

 REDIS_DATABASE=0
Run Code Online (Sandbox Code Playgroud)

对于您的临时环境

 REDIS_DATABASE=1
Run Code Online (Sandbox Code Playgroud)

适合您的开发环境

 REDIS_DATABASE=2
Run Code Online (Sandbox Code Playgroud)

然后在config\database.phpRedis部分中将此行更改'database' => 0,'database' => env('REDIS_DATABASE', 0),

现在,您可以使用以下命令清除任何环境的缓存

php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)


Chr*_*ski 0

artisan 命令的作用cache:clear是调用flush当前连接器上的函数。由于缓存引擎随功能的不同而变化,我认为不可能有选择地使密钥过期以保持缓存 API 的通用性。像 Redis 这样的引擎提供了这样的功能,但 memcached 等引擎则没有。

如果您使用 Redis,您可以修改默认连接器以使用“SCAN / DEL”命令作为flush()方法。但这仍然不会很有效。

如果您的应用程序正确使用缓存刷新,则不会导致任何问题,因为缓存会自行重建。您永远不应该期望缓存中存在某些数据,因为它无论如何都可能过期。