【问题标题】:How can I clear the cache in laravel using command line?如何使用命令行清除 laravel 中的缓存?
【发布时间】:2016-11-10 10:06:40
【问题描述】:

我正在使用 Redis 在 Laravel 5.2 中缓存查询/路由。

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

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

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

'prefix' => 'laravel',

到

'prefix' => ENV('CACHE_PREFIX', 'laravel'),

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

开发者

CACHE_PREFIX="LaravelDev"

暂存

CACHE_PREFIX="LaravelStaging"

用于生产

CACHE_PREFIX="LaravelProduction"

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

php artisan cache:clear

但是上面的代码会清除我所有环境的缓存。

我只想清除“LaravelDev”的缓存,不理会“LaravelStaging”和“LaravelProduction”

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

【问题讨论】:

    标签: laravel caching laravel-5 laravel-5.2 laravel-artisan


    【解决方案1】:

    您可以使用不同的 redis 数据库,而不是使用 CACHE_PREFIX。例如:生产 => 1,暂存 => 2,开发 => 3。 如果您想更熟悉它,请使用此链接:

    1. What's the Point of Multiple Redis Databases?
    2. List All Redis Databases

    因此,在每个环境(生产/阶段/开发)的 .env 文件中,您需要定义不同的 REDIS_CACHE_DB env 值。

    到该行的链接使用此变量 https://github.com/laravel/laravel/blob/2a2522d8824c0852e30a7e3e07d46a543eb4b33d/config/database.php#L142 。 .env 示例:

    .env.production

    REDIS_CACHE_DB=1
    

    .env.stage

    REDIS_CACHE_DB=2
    

    .env.development

    REDIS_CACHE_DB=3
    

    更改环境变量后不要忘记清除配置缓存:https://laravel.com/docs/7.x/configuration#configuration-caching

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      cache:clear artisan 命令在当前连接器上调用flush 函数。由于缓存引擎因功能而异,我认为不可能有选择地使密钥过期,从而保持缓存 API 的通用性。 Redis 等引擎提供了此类功能,但 memcached 等引擎不提供。

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

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

      【讨论】:

      • 当我执行 php artisan cache:clear 时,它会清除 Redis 中的所有内容。我刚刚又测试了一遍。我看到的问题是使用该应用程序的用户将收到不匹配令牌错误,因为会话也被清除。
      • 解决方案是在 Staging 和 Dev 环境中为会话使用不同的存储类型,因此清除缓存不会影响实时用户。
      • 我不能创建一个命令行来执行以下代码吗? $redis = 缓存::getRedis(); $keys = $redis->keys(Cache::getPrefix() . "*"); foreach($keys as $key) { 缓存::forget($key); }
      • 当然,只要您的缓存中没有数千个可能导致其超出可用内存的键,这应该可以工作。直接与 Redis 对话,您可以使用 SCAN / MATCH / COUNT 命令组合。
      猜你喜欢
      • 2015-09-05
      • 1970-01-01
      • 1970-01-01
      • 2017-08-17
      • 1970-01-01
      • 2019-10-14
      • 2011-01-15
      • 1970-01-01
      • 2014-05-28
      相关资源
      最近更新 更多