缓存

配置

.env 文件中, 有个 CACHE_DRIVER 的选项, 用来配置使用哪个类型的缓存, Lumen 支持以下的几种:

  • array
  • file
  • memcached
  • redis
  • database

Note: 如果你需要使用 .env 来管理你的配置信息的话, 请在 bootstrap/app.php 文件里面把这一行去掉注释 Dotenv::load().

Memcached

如果你想使用 Memcached 缓存的话, 请在 .env 文件里面设置这两个选项 MEMCACHED_HOSTMEMCACHED_PORT .

Redis

如果你想使用 Redis 缓存的话, 你需要通过 composer 安装 predis/predis package (~1.0) 扩展包.

Database

如果你打算用数据库作为缓存的话, 你需要配置好数据库表后才能使用, 下面是表结构:

  1. Schema::create('cache', function($table) {
  2. $table->string('key')->unique();
  3. $table->text('value');
  4. $table->integer('expiration');
  5. });

基础使用

Note: 如果你想使用 Cache 的话, 请在 bootstrap/app.php 文件中把 $app->withFacades() 这一行去掉注释.

保存

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

使用 Carbon 来设置过期时间

  1. $expiresAt = Carbon::now()->addMinutes(10);
  2. Cache::put('key', 'value', $expiresAt);

如果不存在的话再保存

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

add 会返回是否加入 Cache 的反馈, 如果增加成功的话, 会返回 true, 否则 false.

检查是否存在

  1. if (Cache::has('key')) {
  2. //
  3. }

读取

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

读取如果不存在的话返回默认值

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

永久性存储一份数据

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

有时候您会希望从缓存中取得对象,而当此对象不存在时会保存一个默认值,您可以使用 Cache::remember 方法:

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

您也可以结合 rememberforever 方法:

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

请注意所有保存在缓存中的对象皆会被序列化,所以您可以任意保存各种类型的数据。

从缓存拉出对象

如果您需要从缓存中取得对象后将它删除,您可以使用 pull 方法:

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

从缓存中删除对象

  1. Cache::forget('key');