我是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;
});
我不知道该怎么做。
答案 0 :(得分:1)
它们是所有缓存。
它们都用来降低时间成本。
它属于应用。我们称之为应用程序缓存。
php artisan config:cache
php artisan route:cache
这两个命令是缓存路由和配置。
它们始终存储在
中bootstrap/cache/
运行
php artisan config:clear
php artisan route:clear
仅清除bootstrap/cache/
中的目录和文件。
它们是静态。因此,只有在更改它们时,它们才会更改。
如果更改它们,则需要手动clear
和cache
。
在您配置了这些路由和配置之后。
Laravel 无需再次从文件读取配置和路由,这花费了IO时间。
文件系统缓存和Redis缓存也是缓存。
但是,他们使用不同的驱动程序来存储数据,即您存储缓存数据的位置。
文件系统路径:如果您正在使用文件系统驱动程序。它们存储在
中storage/framework/cache/
Reids PATH:按键值存储在
redis
中的数据。
当您发现此代码有很多请求来获取数据时。 这些数据并没有这么快地改变。
您可以使用缓存来存储它们,然后在下次对该API发出另一个请求时使用。 它只是从缓存中获取数据。 如下所示:
$posts = Cache::remember('index.posts', 30, function()
{return Post::with('comments', 'tags', 'author', 'seo')->whereHidden(0)->get();});
第一个请求从数据库中获取帖子的数据,然后将这些数据存储在30秒后过期的缓存(Reids或Filesystem)中。
下一个请求仅通过缓存获取帖子的数据。他们不需要再次在数据库中搜索。
还有一个:
use Illuminate\Support\Facades\Redis;
Route::get('/', function () {
$visits = Redis::incr('visits');
return $visits;
});
意味着当人们请求localhost:8000/
时,用户的访问次数在redis
中增加(不需要存储在数据库中,这会花费更多时间),
下次,当请求搜索访问次数时,可以很快在redis
中找到它。
PS:这里使用Redis Facade,然后将数据存储在
redis
中。如果您将Redis用作缓存驱动程序,则
Cache::remember()
也会在Redis中存储数据。但是,使用Redis Facade,您可以使用许多Redis方法。
我认为redis
比filesystem
好。
因为redis
将数据存储在内存中,而文件系统存储在磁盘中。
从内存中读取数据比从磁盘中读取数据更快。
操作数据比文件系统更容易。例如,Redis支持清除特定标签的所有缓存,但是文件系统无法[因为文件系统通过加密密钥的名称存储缓存数据]。
对于分布式服务器,文件系统缓存不是一个好主意。降低缓存命中率。
老实说,还可以选择其他驱动程序,例如mongodb
。
顺便说一句,我的英语不是很好,希望你能理解。