怎么用命令清空php缓存cache,关于缓存:如何使用命令行清除laravel中的缓存?

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

我在同一台Web服务器上运行3个环境,即"生产","分段"和"开发"。

对于每个环境,我都设置了不同的缓存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"

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

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

如果要对多个实例使用同一台Redis服务器,则可以为每个实例使用不同的Redis数据库。

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

为您的生产环境

REDIS_DATABASE=0

为您的暂存环境

REDIS_DATABASE=1

针对您的开发环境

REDIS_DATABASE=2

然后在Redis部分的config\database.php中更改此行'database' => 0,

到'database' => env('REDIS_DATABASE', 0),

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

php artisan cache:clear

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

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

如果您的应用程序正确使用了缓存,则它不会重新生成缓存,因此不会造成任何问题。您永远不要期望某些数据在高速缓存中,因为它们可能总会过期。

当我执行php artisan cache:clear时,它会清除Redis中的所有内容。 我只是再次测试。 我看到的问题是,使用该应用程序的用户将收到Mismatch令牌错误,因为会话也被清除了。

解决方案是在Staging和Dev环境中对会话使用不同的存储类型,因此清除缓存不会影响实时用户。

我不能创建一个命令行来执行以下代码吗? $ redis = Cache :: getRedis(); $ keys = $ redis-> keys(Cache :: getPrefix()。" *"); foreach($ keys as $ key){Cache :: forget($ key); }

当然,只要您在缓存中没有成千上万的键,这可能会导致它超过可用内存,那应该就可以了。 直接与Redis对话,您可以使用SCAN / MATCH / COUNT命令组合。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值