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.php该Redis部分中将此行更改'database' => 0,
为'database' => env('REDIS_DATABASE', 0),
现在,您可以使用以下命令清除任何环境的缓存
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)
artisan 命令的作用cache:clear是调用flush当前连接器上的函数。由于缓存引擎随功能的不同而变化,我认为不可能有选择地使密钥过期以保持缓存 API 的通用性。像 Redis 这样的引擎提供了这样的功能,但 memcached 等引擎则没有。
如果您使用 Redis,您可以修改默认连接器以使用“SCAN / DEL”命令作为flush()方法。但这仍然不会很有效。
如果您的应用程序正确使用缓存刷新,则不会导致任何问题,因为缓存会自行重建。您永远不应该期望缓存中存在某些数据,因为它无论如何都可能过期。