缓存


配置

Laravel 对不同的缓存机制提供了一套统一的API。缓存配置信息存放于app/config/cache.php文件。在该配置文件中,你可以指定整个应用程序所使用的缓存驱动器。Laravel自身支持大多数流行的缓存服务器,例如Memcached和Redis。

缓存配置文件还包含了其他配置项,文件里都有详细说明,因此,请务必查看这些配置项和其描述信息。默认情况下,Laravel被配置为使用file缓存驱动,它将数据序列化,并存放于文件系统中。在大型应用中,强烈建议使用基于内存的缓存系统,例如Memcached或APC。

缓存用法

将某一数据存入缓存

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

当某一数据不在缓存中是才将其保存

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

检查缓存中是否有某个key对应的数据

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();
});

注意:所有存在于缓存中的数据都是经过序列化的,因此,你可以存储任何类型的数据。

从缓存中删除某项数据

Cache::forget('key');

增加 & 减少

除了文件数据库驱动器,其他驱动器都支持增加减少操作:

让某个值增加

Cache::increment('key');

Cache::increment('key', $amount);

让某个值减少

Cache::decrement('key');

Cache::decrement('key', $amount);

缓存区

注意: 文件数据库缓存驱动都不支持缓存区。

缓存区允许你将相关数据项分组存放,然后可以对整个区进行清空操作。要想访问缓存区,需要使用section方法:

访问缓存区

Cache::section('people')->put('John', $john, $minutes);

Cache::section('people')->put('Anne', $anne, $minutes);

你也可以从缓存区中取得缓存项,也可以使用其他的缓存方法,例如incrementdecrement

从缓存区中取得数据项

$anne = Cache::section('people')->get('Anne');

你可以使用flush方法清空整个缓存区:

Cache::section('people')->flush();

数据库缓存

当使用数据库缓存驱动时,你需要设置一个数据表来缓存数据。以下是表Schema定义案例:

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