Php 在Laravel中使用Redis缓存图像?

Php 在Laravel中使用Redis缓存图像?,php,laravel,caching,redis,Php,Laravel,Caching,Redis,我目前正在使用Redis为我的Laravel应用程序中的缓存内容提供服务。我注意到在缓存Facade中使用它比在本机Redis命令和命令中使用要慢。我想用一个实现Redis facade的代码段替换这个代码段 公共函数setImageCached(请求$Request) { $img=Cache::记住('image.'$request->url,6000,函数()使用($request){ 返回文件内容($request->url); }); 返回响应::make($img,200,array

我目前正在使用Redis为我的Laravel应用程序中的缓存内容提供服务。我注意到在缓存Facade中使用它比在本机Redis命令和命令中使用要慢。我想用一个实现Redis facade的代码段替换这个代码段

公共函数setImageCached(请求$Request)
{
$img=Cache::记住('image.'$request->url,6000,函数()使用($request){
返回文件内容($request->url);
});
返回响应::make($img,200,array('Content-Type'=>'image/jpeg');
}

根据注释形成此答案,因此问题可能需要更新以匹配

要在不同的上下文中使用不同的缓存驱动程序,您可以定义一个默认缓存驱动程序(redis最适合这样做),然后为具有以下内容的文件使用单独的存储

Cache::store('file')->remember('image_'.$request->url, 6000, function () use ($request) {
        return file_get_contents($request->url);
});
这将使用文件系统驱动程序来缓存文件,这是redis用于此用途的更好的解决方案

您还发现,需要注意的一点是,Laravel不会清理过期的缓存文件。有一个软件包可以为您处理此问题,
arifhp86/laravel clear expired cache file
,它为您提供artisan命令

php artisan cache:clear-expired

您可以根据自己的意愿安排此问题的运行频率

我认为您链接的问题有这样一个确切的代码(但带有帖子),并且还将其转换为使用Redis facade。也许试着把这个例子修改成你自己的例子,让我们知道你在哪里遇到了困难,你尝试了什么?现在听起来你只是想让别人帮你做:)在Laravel中,文件/图像缓存不是这样做的,这可能与性能问题有关。在我看来,Redis并不适合图像缓存。我会使用文件系统驱动程序来实现这些功能。@JasonResult检查我在第一条评论中发布的链接。如果在配置中打开文件系统缓存,则不需要手动缓存每个映像。这使用的是存储驱动缓存方法,而不是Laravel的内置缓存。哦,是的,我的错,缓存只适用于通过Laravel的文件系统驱动程序存储的图像。。在这种情况下,我建议采用@ceejayoz方法。您可以定义多个缓存驱动程序并在不同的情况下使用它们,我会将Redis保留为默认值,然后在存储文件时而不是执行
cache::memory
,使用'cache::store('file')->memory'告诉它使用文件存储。