一、Cache概述
Laravel为开发者提供了强大的缓存支持,同时支持多种缓存器,如文件缓存器、memcached缓存器、redis缓存器等等。通过使用Laravel的缓存功能可以显著提升应用程序的速度。
Cache是将应用程序经常使用的数据存储起来,以便快速访问。通常,缓存数据会存储到一个目录下的文件系统、键值数据库、内存或者其他数据存储系统中。
二、配置Cache
在Laravel中,可以在config/cache.php配置文件中配置缓存。默认情况下,Laravel使用file缓存器,可以在config/cache.php中修改默认驱动设置。
以下是一个使用redis缓存器的示例配置:
'default' => env('CACHE_DRIVER', 'redis'),
'prefix' => env('CACHE_PREFIX', 'laravel'),
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => env('REDIS_CACHE_DB', 0),
],
],
三、Cache用法
3.1 存储项目到Cache
使用缓存前,需要先引入 `Illuminate\Support\Facades\Cache`
将项目存储到缓存中:
Cache::put('key', 'value', $minutes);
如需永久存储,可以将缓存时间设为null
Cache::forever('key', $value);
3.2 检索项目
从缓存中获取项目:
$value = Cache::get('key');
如需获取缓存项目,如未发现,返回一段指定值:
$value = Cache::get('key', 'default');
3.3 判断项目是否存在
如果缓存中存在key,返回true,否则false:
if (Cache::has('key')) {
//
}
3.4 删除项目
从缓存中删除项目:
Cache::forget('key');
3.5 增加/减少项目的值
将缓存中的项目增加指定值:
Cache::increment('key');
Cache::increment('key', $value);
将缓存中的项目减少指定值:
Cache::decrement('key');
Cache::decrement('key', $value);
四、Cache标签
Cache标签是将缓存项目分组的方式,因此可以使用标签来快速清除缓存。通过标签可以将相关的缓存放在一起,方便统一管理。
4.1 创建标签
创建名为 `people` 的缓存标签:
Cache::tags('people')->put('John', $john, $minutes);
Cache::tags('people')->put('Susan', $susan, $minutes);
4.2 检索标签数据
可以使用tags方法来检索单个标签数据:
$john = Cache::tags('people')->get('John');
也可以使用tags方法来检索多个标签数据:
$people = Cache::tags('people', 'artists')->get('John');
4.3 清除标签数据
使用tags方法清除标签与其存储的值:
Cache::tags('people')->flush();
可以通过依次传递每个键名来只移除特定标签下的项目:
Cache::tags('people')->forget('John');
五、Cache驱动
Laravel提供了多种缓存驱动程序,开发者可以根据自身需求选择使用适合的驱动程序。
5.1 文件缓存器
Laravel默认使用文件缓存器`file`。存储文件位置位于`storage/framework/cache`。在生产环境下,推荐使用其他缓存器,如 Redis 或 Memcached,以获取更快的缓存速度。
5.2 Memcached缓存器
Memcached是一种常用的互联网缓存系统,执行速度非常快。你可以通过使用Memcached缓存器来存储缓存数据。你也需要保证你的服务器上已安装了Memcache服务。
以下是使用memcached缓存器的配置文件示例:
'memcached' => [
[
'host' => env('MEMCACHED_HOST', '127.0.0.1'),
'port' => env('MEMCACHED_PORT', 11211),
'weight' => 100,
],
],
5.3 Redis缓存器
Redis是一种高级的键值存储系统,提供了比Memcached更丰富的数据结构。在执行速度上,Redis执行速度非常快。你需要设置正确的 Redis 主机和端口。
以下是使用redis缓存器的配置文件示例:
'redis' => [
'client' => 'predis',
'default' => [
'host' => env('REDIS_HOST', '127.0.0.1'),
'password' => env('REDIS_PASSWORD', null),
'port' => env('REDIS_PORT', 6379),
'database' => 0,
],
],
六、Cache实现
Laravel的Cache实现是建立在Symfony Cache组件的基础之上。Symfony Cache组件提供了一个简单和通用的缓存系统。在Laravel中Symfony Cache组件默认使用file缓存器。
6.1 文件缓存器
文件缓存器是Laravel中默认的缓存机制,可以将缓存文件存储在本地文件系统中。
$value = Cache::store('file')->get('key');
6.2 Memcached缓存器
使用Memcached,可以用以下代码实现获取缓存:
$value = Cache::store('memcached')->get('key');
6.3 Redis缓存器
使用Redis,可以用以下代码实现获取缓存:
$value = Cache::store('redis')->get('key')
七、总结
Laravel缓存组件提供了多种可扩展的缓存策略,可以选择适合自己的缓存器。它还支持标签,可以根据需要进行项目分类。在应用程序中使用缓存可以有效提高性能,特别是在需要频繁访问数据的情况下。
原创文章,作者:CGJTH,如若转载,请注明出处:https://www.506064.com/n/360981.html