- 配置文件:Laravel 的缓存配置文件位于
config/cache.php
。可在其中指定应用程序默认使用的缓存驱动等设置。
- 常用驱动及设置
- 文件驱动:默认情况下,Laravel 使用文件缓存驱动,将缓存数据存储在
storage/framework/cache/data
目录下。适合简单应用和开发环境。
- Redis 驱动:若要使用 Redis 作为缓存驱动,需安装
phpredis
PHP 扩展或predis/predis
包。修改config/cache.php
中的default
为redis
,还可在.env
文件中配置 Redis 连接相关的环境变量,如REDIS_HOST
等。
- 数据库驱动:使用数据库缓存驱动,要先创建用于存储缓存数据的表。可通过
php artisan cache:table
命令生成迁移文件,执行php artisan migrate
创建表。
- 存储数据
- 指定过期时间:使用
Cache::put('key', 'value', $minutes)
方法将数据存储在缓存中,并指定缓存过期时间(以分钟为单位)。
- 永久存储:使用
Cache::forever('key', 'value')
可将数据永久存储在缓存中。
- 检索数据:通过
$value = Cache::get('key')
获取缓存中的数据。若缓存键不存在,则返回null
。也可传递第二个参数指定默认值,如$value = Cache::get('key', 'default')
。
- 删除数据:使用
Cache::forget('key')
从缓存中删除指定的缓存键。
- 检查缓存键是否存在:通过
Cache::has('key')
检查缓存键是否存在,存在返回true
,否则返回false
。
除了使用Cache
门面,Laravel 还提供了全局辅助函数cache
。如cache(['key' => 'value'], $minutes)
用于存储数据,$value = cache('key')
用于获取数据,cache()->forget('key')
用于删除数据。
- 缓存标签:Laravel 支持缓存标签,方便对一组缓存进行操作。如
Cache::tags(['tag1', 'tag2'])->put('key', 'value', $minutes)
存储带标签的缓存数据,Cache::tags(['tag1', 'tag2'])->flush()
可删除带有这些标签的所有缓存数据。
- 缓存锁:缓存锁可防止并发操作导致的数据不一致问题。示例代码如下:
$lock = Cache::lock('lock_name', 10);
if ($lock->get()) {
try {
// 执行操作
} finally {
$lock->release();
}
}
public function getUsers()
{
$key = 'users';
$minutes = 60;
$users = Cache::remember($key, $minutes, function () {
return DB::table('users')->get();
});
return $users;
}
上述代码中,Cache::remember
方法会检查是否存在与users
缓存键对应的值。如果存在,则返回该值;如果缓存键不可用,则从数据库中获取用户列表并将其缓存。