当前位置: 首页 > 文档资料 > Lumen 中文文档 >

1.6.2 缓存

优质
小牛编辑
121浏览
2023-12-01

配置

.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

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

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

基础使用

Note: 如果你想使用 Cache 的话, 请在 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 会返回是否加入 Cache 的反馈, 如果增加成功的话, 会返回 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');

最后更新:

类似资料

  • 当你使用本地(在内存中)缓存时,服务器可以缓存一些信息并快速地检索它,但是其他服务器不能访问这个缓存数据,他们需要到数据库中查询同样的信息。 如果你喜欢使用分布式缓存让其他服务器访问缓存的数据,由于它有一些序列化/反序列化和网络延迟开销,则需要注意:在某些情况下,它可能会降低性能。 缓存需要处理的另一个问题:缓存失效。 There are only two hard things in Compu

  • Serenity 提供一些缓存抽象和实用功能让你更容易地使用本地缓存。 术语 本地(local) 的意思是指在本地内存中缓存项目(因此没有涉及到序列化)。 当你的应用程序在网站群(web farm) 中部署时,本地缓存可能还不够或者有时合适。我们将在 分布式缓存 章节中讨论该场景。

  • Web 应用程序可能需要为成百上千甚至更多的用户同时提供服务。如果你没有采取必要的措施,在这种负载下,你的网站可能会崩溃或变得没有响应。 假设在主页显示最后 10 条新闻,并且平均每分钟有上千名用户访问此页面。你可能为每个用户通过查询数据库来显示页面视图信息: SELECT TOP 10 Title, NewsDate, Subject, Body FROM News ORDER BY NewsD

  • 一个动态网站的基本权衡点就是,它是动态的。 每次用户请求一个页面,Web服务器将进行所有涵盖数据库查询到模版渲染到业务逻辑的请求,用来创建浏览者需要的页面。从开销处理的角度来看,这比你读取一个现成的标准文件的代价要昂贵的多。 对于大多数网络应用程序,这个开销不是很大的问题。我们的应用不是washingtonpost.com or slashdot.org; 他们只是中小型网站,而且只有那么些流量而

  • 缓存的原则 缓存是一个大型系统中非常重要的一个组成部分。在硬件层面,大部分的计算机硬件都会用缓存来提高速度,比如 CPU 会有多级缓存、RAID 卡也有读写缓存。在软件层面,我们用的数据库就是一个缓存设计非常好的例子,在 SQL 语句的优化、索引设计、磁盘读写的各个地方,都有缓存,建议大家在设计自己的缓存之前,先去了解下 MySQL 里面的各种缓存机制,感兴趣的可以去看下High Performa

  • 缓存是现代高并发应用程序的重要组成部分。即使你的 web 应用程序目前还没有那么高的并发量,但在之后的发展中极有可能会遇到高并发的应用场景,因此从一开始就使用缓存设计程序是一个好主意。 本地缓存 分布式缓存 二级缓存