Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
理解Laravel缓存:缓存facade和Redis_Laravel_Caching_Redis - Fatal编程技术网

理解Laravel缓存:缓存facade和Redis

理解Laravel缓存:缓存facade和Redis,laravel,caching,redis,Laravel,Caching,Redis,我是拉威尔的新手。我对这个话题做了研究,但似乎找不到一个能帮我澄清问题的答案 我知道Laravel的默认缓存驱动程序设置为file,我可以更改它。它还具有一些artisan缓存命令,例如: php artisan config:cache php artisan route:cache 1)即使Laravel有一些内置的命令和功能可以自动处理某些缓存(不知道具体是什么部分),我仍然必须在查询结果上手动使用缓存外观,对吗 它不会自动执行,如果我想更改某些内容,我只需要使用缓存外观,对吗 以下是教

我是拉威尔的新手。我对这个话题做了研究,但似乎找不到一个能帮我澄清问题的答案

我知道Laravel的默认缓存驱动程序设置为file,我可以更改它。它还具有一些artisan缓存命令,例如:

php artisan config:cache
php artisan route:cache
1)即使Laravel有一些内置的命令和功能可以自动处理某些缓存(不知道具体是什么部分),我仍然必须在查询结果上手动使用缓存外观,对吗

它不会自动执行,如果我想更改某些内容,我只需要使用缓存外观,对吗

以下是教程中的一个随机示例:

$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
2)当使用Redis(带有predis软件包)作为缓存驱动程序时,在某些情况下,我需要使用缓存外观还是Redis外观,或者两者都需要?或者我可以简单地在Laravel和server(Forge上的数字海洋水滴)中启用Redis,而不做任何其他事情吗

我在Laravel文档中看到过类似的内容,使用缓存外观:

Cache::store('redis')->put('bar', 'baz', 600);
我还看到了使用Redis facade的教程:

use Illuminate\Support\Facades\Redis; 

Route::get('/', function () { 
     $visits = Redis::incr('visits'); 
     return $visits; 
});
我不知道该怎么做。

Common: 它们都是缓存

它们都用于减少时间成本

不同点:
配置和路线: 它属于应用程序。我们称之为应用程序缓存

php artisan配置:缓存 php artisan路由:缓存 这两个命令用于缓存路由和配置

路径: 它们总是存储在
bootstrap/cache/

运行

php artisan配置:清除 php artisan路由:清除 仅清除
引导/cache/
中的目录和文件

它们是静态的。因此,只有当您更改它们时,它们才会更改

贝玲妃 如果更改它们,则需要手动
清除
缓存
它们

完成这些路由和配置后

Laravel不需要再次从文件中读取配置和路由,这需要IO时间成本


文件系统缓存和Redis缓存: 文件系统缓存和Redis缓存也是缓存

但是,它们使用不同的驱动程序来存储数据,这意味着存储缓存数据的位置

文件系统路径:如果您使用的是文件系统驱动程序。它们存储在
storage/framework/cache/

Reids路径:数据按键值存储在redis中

你什么时候用? 当您发现有许多请求此代码获取数据时。 这些数据的变化并不是那么快

您可以使用缓存来存储它们,然后,下次再向该api发出另一个请求。 它只是从缓存中获取数据。 如下图所示:

$posts=Cache::memory('index.posts',30,function())
{return Post::with('comments','tags','author','seo')->whereHidden(0)->get();});
第一个请求从数据库获取POST的数据,然后将这些数据存储在缓存(REID或文件系统)中,该缓存在30秒后过期

下一个请求仅通过缓存获取POST的数据。他们不需要再次在数据库中搜索

还有这个:

使用light\Support\Facades\Redis;
路由::get('/',函数(){
$visions=Redis::incr('visions');
回访;;
});
意味着当人们请求
localhost:8000/
时,用户在
redis
中的访问次数会增加(不需要存储在数据库中,花费更多时间), 下次,当请求搜索访问计数时,可以很快在
redis
中找到它

PS:这里使用Redis Facade,然后数据存储在
Redis

如果您使用redis作为缓存驱动程序,
cache::memory()
也将在redis中存储数据

但是,使用Redis Facade,可以使用许多Redis方法

哪个更好? 我认为
redis
filesystem

  • 因为redis将数据存储在内存中,而文件系统存储在磁盘中。 从内存中读取数据比磁盘快

  • 操作Redis中的数据比文件系统更容易。例如,Redis支持清除特定标记的所有缓存,但文件系统不能[因为文件系统按加密密钥的名称存储缓存数据]

  • 对于分布式服务器,文件系统缓存是个坏主意。较低的缓存命中率

  • 老实说,还可以选择其他驱动程序,比如
    mongodb

    顺便说一句,我的英语不是很好,希望你能理解。

    Common: 它们都是缓存

    它们都用于减少时间成本

    不同点:
    配置和路线: 它属于应用程序。我们称之为应用程序缓存

    php artisan配置:缓存 php artisan路由:缓存 这两个命令用于缓存路由和配置

    路径: 它们总是存储在
    bootstrap/cache/

    运行

    php artisan配置:清除 php artisan路由:清除 仅清除
    引导/cache/
    中的目录和文件

    它们是静态的。因此,只有当您更改它们时,它们才会更改

    贝玲妃 如果更改它们,则需要手动
    清除
    缓存
    它们

    完成这些路由和配置后

    Laravel不需要再次从文件中读取配置和路由,这需要IO时间成本


    文件系统缓存和Redis缓存: 文件系统缓存和Redis缓存也是缓存

    但是,它们使用不同的驱动程序来存储数据,这意味着存储缓存数据的位置

    文件系统路径:如果