缓存

配置

.env 文件中的 CACHE_DRIVER 配置项用于确定当前应用程序中使用哪个缓存 “driver(驱动)”。当然,Lumen 支持 Laravel 所支持的所有驱动,包括 Memcached 和 Redis:

注意: 如果你使用 .env 文件用来配置你的应用程序,不要忘记在 bootstrap/app.php 文件中将 Dotenv::load() 方法前面的注释去掉。

Memcached

如果你使用的是 Memcached 驱动,需要在 .env 配置文件中设置 MEMCACHED_HOSTMEMCACHED_PORT 配置项。

Redis

在 Lumen 中使用 Redis 缓存前,需要先通过 Composer 安装 predis/predis 包 (~1.0)。

数据库

使用数据库缓存驱动前,需要设置用于保存缓存数据的数据表。下面是数据表的实例:

Schema::create('cache', function($table) {
    $table->string('key')->unique();
    $table->text('value');
    $table->integer('expiration');
});

基本用法

注意 如果你打算使用 Cache facade,请务必将 bootstrap/app.php 文件中 $app->withFacades() 前面的注释去掉。

保存数据到缓存中

Cache::put('key', 'value', $minutes);

使用 Carbon 对象设置缓存过期时间

$expiresAt = Carbon::now()->addMinutes(10);

Cache::put('key', 'value', $expiresAt);

如果数据不存在则将其存入缓存中

Cache::add('key', 'value', $minutes);

如果数据确实被 添加 到缓存中了,add 方法将返回 true,否则返回 false

检查缓存中是否有某条数据

if (Cache::has('key')) {
	//
}

从缓存中取出一条数据

$value = Cache::get('key');

取出一条数据或返回默认值

$value = Cache::get('key', 'default');

$value = Cache::get('key', function() { return 'default'; });

将一条数据永久保存到缓存中

Cache::forever('key', 'value');

有时你可能希望从缓存中取出一条数据,但是如果这条数据不存在的话就保存一个默认值。请使用 Cache::remember 方法:

$value = Cache::remember('users', $minutes, function() {
	return DB::table('users')->get();
});

还可以联合使用 rememberforever 方法:

$value = Cache::rememberForever('users', function() {
	return DB::table('users')->get();
});

注意,所有存放到缓存中的数据都是被序列化过的,因此,你可以放心的存储任何类型的数据。

从缓存中取出一条数据并将其删除

如果你需要从缓存中取出一条数据然后将其删除掉,请使用 pull 方法:

$value = Cache::pull('key');

从缓存中删除一条数据

Cache::forget('key');