我是Laravel的新手。我已经对该主题进行了研究,但似乎找不到找到可以解决问题的答案。
我知道Laravel的默认缓存驱动程序设置为 file ,可以更改。它还有一些手工缓存命令,例如:
php artisan config:cache php artisan route:cache
1) 即使Laravel具有一些自动处理某些缓存的内置命令和功能(无法确切了解哪些部分),我仍然必须在查询结果上手动使用Cache Facade,对吗?
它不会自动执行操作,仅在我想更改某些内容时才需要使用Cache门面,对吗?
这是一个教程中的随机示例:
$posts = Cache::remember('index.posts', 30, function() {return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
2) 当使用Redis(带有 predis 软件包)作为缓存驱动程序时,在某些情况下,我需要使用Cache外观还是Redis外观,或者两者都使用?还是可以仅在Laravel和服务器(Forge上的Digital Ocean Droplet)中启用Redis,而不做其他事情?
我已经在Laravel文档中使用Cache门面看到了类似的内容:
Cache::store('redis')->put('bar', 'baz', 600);
我也看过使用Redis门面的教程:
use Illuminate\Support\Facades\Redis; Route::get('/', function () { $visits = Redis::incr('visits'); return $visits; });
我不知道该怎么做。
它们都是 缓存 。
它们全部用于 减少时间成本 。
它属于 application 。我们称之为 应用程序缓存 。
这两个命令用于缓存路由和配置。
它们总是存储在 bootstrap/cache/
bootstrap/cache/
跑步
php artisan config:clear php artisan route:clear
仅清除中的目录和文件bootstrap/cache/。
它们是 静态的 。因此,仅在您更改它们时才更改它们。
如果你改变它们,你需要clear和cache手动他们。
clear
cache
在您完成这些路由和配置之后。
Laravel 不需要再次从文件读取配置和路由, 这花费了IO时间。
文件系统缓存和Redis缓存也都是缓存。
但是,它们使用 不同的驱动程序 来存储数据,这意味着 您可以在其中存储缓存数据 。
文件系统路径:如果您正在使用文件系统驱动程序。它们存储在storage/framework/cache/ Reids PATH:数据redis按键值存储在其中。
文件系统路径:如果您正在使用文件系统驱动程序。它们存储在storage/framework/cache/
storage/framework/cache/
Reids PATH:数据redis按键值存储在其中。
redis
当您发现此代码有很多请求来获取数据时。这些数据并没有这么快地改变。
您可以使用缓存来存储它们,然后在下次对该API发出另一个请求时使用。它只是从缓存中获取数据。如下所示:
第一个请求从数据库中获取帖子的数据,然后将这些数据存储在30秒后过期的缓存(Reids或Filesystem)中。
下一个请求仅通过缓存获取帖子的数据。他们不需要再次在数据库中搜索。
还有这个:
意味着当人们请求时localhost:8000/,用户的访问次数增加了redis(不需要存储在数据库中,这花费了更多的时间),下次,当请求搜索访问数时,可以redis很快找到它。
localhost:8000/
PS:这里使用Redis Facade,然后将数据存储在中redis。 如果您将redis用作缓存驱动程序,那么Cache::remember()也会将数据存储在redis中。 但是,使用Redis Facade,可以使用许多Redis方法。
PS:这里使用Redis Facade,然后将数据存储在中redis。
如果您将redis用作缓存驱动程序,那么Cache::remember()也会将数据存储在redis中。
Cache::remember()
但是,使用Redis Facade,可以使用许多Redis方法。
我认为redis比还好filesystem。
filesystem
因为redis将数据存储在内存中,而文件系统存储在磁盘中。从内存读取数据比从磁盘读取数据 快 。
*在Redis中 *操作 数据比文件系统 更容易 。例如,Redis支持清除特定标签的所有缓存,但是文件系统无法[因为文件系统通过加密密钥的名称存储缓存数据]。
对于 分布式 服务器,文件系统缓存不是一个好主意。降低缓存命中率。
老实说,还有其他驱动程序可以选择mongodb。
mongodb
顺便说一句,我的英语不是很好,希望你能理解。