在Laravel 5.2中使用Redis缓存查询/路由,多环境下通过设置不同缓存prefix值实现缓存区分
我正在使用Redis查询Laravel 5.2中的路线。

我在同一Web服务器上运行3个环境,即“生产”,“片段”和“开发”。
对于每个环境,我设置了不同的缓存前缀值,以使我可以连接到不同的环境。
在config/cache.php文件中,我更改了行
'前缀'=>'laravel',
到
'prefix'=> env('cache_prefix','laravel'),
然后在我的.env文件中,在每个环境中添加前缀
用于发展
cache_prefix =“ laraveldev”
舞台
cache_prefix =“ laravelstaging”
用于生产
cache_prefix =“ laravelproduction”
我知道我可以从命令行中删除缓存
PHP工匠缓存:清除
但是上面的代码将清除我所有环境的缓存。
我只想删除“ laraveldev”的缓存,但只留下“ laravelstaging”和“ laravelproduction”
如何清除特定环境的缓存?
缓存:Clear Command将删除与数据库连接相关的所有缓存。
如果要在多个实例中使用相同的Redis服务器,则可以为每个实例使用不同的REDIS数据库。
在.env文件中,您可以添加以下内容
对于您的生产环境
redis_database = 0
对于您的临时环境
redis_database = 1
对于您的开发环境
redis_database = 2
然后在redis部分的config \ database.php中更改此行。
到'数据库'=> env('redis_database',0),0),,
现在,您可以使用以下命令删除任何环境的缓存
PHP工匠缓存:清除
缓存:Clear Artisan命令是调用当前连接器上的冲洗功能的角色。由于高速缓存引擎功能的变化,我认为不可能选择性地使钥匙到期以保持高速缓存API多功能。像Redis这样的发动机提供了这样的功能,但是Memcached却没有。
如果您使用的是Redis,则可以修改默认连接器以将“扫描 / del”命令用于flush()方法。但这仍然不是很有效。
如果您的应用程序正确使用缓存,则不会重新生成缓存,因此不会引起任何问题。您永远不会期望某些数据会高速缓存,因为它们可能总是过期的。
当我执行PHP工匠缓存时:清除时,它清除了Redis中的所有内容。我再次测试。我看到的问题是,使用此应用程序的用户将收到不匹配的令牌错误,因为会话也已清除。
解决方案是在登台和开发环境中使用会话中的不同存储类型,因此清除缓存不会影响真实的时间用户。
我不能创建命令行以执行以下代码吗? $ redis = cache :: gedredis(); $ keys = $ redis->键(cache :: getprefix()。“ *”); }
当然,只要您的缓存中没有数千个键,这可能会导致它超过可用的内存,就可以了。直接与Redis交谈,您可以使用扫描 /匹配 /计数命令组合。