缓存组件
编辑本页警告:您正在浏览的文档欧宝官网下载appob娱乐下载Symfony 3.4,现已不再维护。
读本页的更新版本用于Syob娱乐下载mfony 6.2(当前稳定版本)。
缓存组件
Cache组件提供了一个扩展的PSR-6实现以及一个PSR-16“简单缓存”实现为您的应用程序添加缓存。它是为性能和弹性而设计的,并为最常见的缓存后端提供了可随时使用的适配器,包括用于从/到适配的代理教义缓存.
3.3
PSR-16“简单缓存”实现是在Symfony 3.3中引入的。ob娱乐下载
安装
1
$作曲家需要symfony/缓存:^ob娱乐下载3.4
请注意
如果在Symfony应用程序外部安装此组件,则必须要求ob娱乐下载供应商/ autoload.php
文件,以启用Composer提供的类自动加载机制。读这篇文章欲知详情。
缓存(PSR-6) vs简单缓存(PSR-16)
该组件包括两个不同的缓存方法:
- PSR-6缓存:
- 一个功能齐全的缓存系统,包括缓存“池”,更高级的缓存“项”和用于无效的缓存标记.
- PSR-16简单缓存:
- 从缓存中存储、获取和删除项目的简单方法。
两种方法都支持相同缓存适配器和将给您非常相似的性能。
提示
该组件还包含在PSR-6和PSR-16缓存之间进行转换的适配器。看到PSR-6和PSR-16缓存之间的互操作性适配器.
简单高速缓存(PSR-16)
这部分是组件的实现PSR-16,这意味着它的基本API与标准中定义的相同。首先,从一个内置缓存类创建一个缓存对象。例如,要创建基于文件系统的缓存,请实例化FilesystemCache:
1 2 3
使用ob娱乐下载\组件\缓存\简单的\FilesystemCache;$缓存=新FilesystemCache ();
现在你可以使用这个对象创建、检索、更新和删除项目:
12 3 4 5 6 7 8 9 10 11 12 13 14 16 17 18 19 20 21 22
//在缓存中保存一个新项$缓存->集(“stats.products_count”,4711);//或设置自定义TTL/ /缓存- >设置(“统计数据。Products_count ', 4711, 3600);//获取缓存项如果(!$缓存->有(“stats.products_count”)) {/ /……项在缓存中不存在}//获取项存储的值$productsCount=$缓存->get (“stats.products_count”);//或指定一个默认值,如果键不存在// $productsCount = $cache->get('stats. count ')products_count ', 100);//删除缓存键$缓存->删除(“stats.products_count”);//清除所有缓存键$缓存->明确的();
你也可以同时使用多个项目:
12 3 4 5 6 7 8 9 10 11 12 13 14
$缓存->setMultiple ([“stats.products_count”= >4711,“stats.users_count”= >1356]);$统计数据=$缓存->getMultiple ([“stats.products_count”,“stats.users_count”]);$缓存->deleteMultiple ([“stats.products_count”,“stats.users_count”]);
可用的简单缓存(PSR-16)类
以下是可用的缓存适配器:
提示
要了解关于这些类的更多信息,您可以阅读PSR-6缓存池页面。这些“简单”(PSR-16)缓存类与该页上的PSR-6适配器并不相同,但每个类都共享构造函数参数和用例。
更高级的高速缓存(PSR-6)
要使用更先进的PSR-6缓存功能,您需要学习其关键概念:
- 项
- 以键/值对存储的单个信息单元,其中键是信息的唯一标识符,值是信息的内容;
- 池
- 缓存项的逻辑存储库。所有缓存操作(保存项、查找项等)都是通过池执行的。应用程序可以根据需要定义任意数量的池。
- 适配器
- 它实现了实际的缓存机制,将信息存储在文件系统、数据库等中。该组件为常见的缓存后端提供了几个随时可用的适配器(Redis, APCu, Doctrine, PDO等)。
基本用法(PSR-6)
这部分是组件的实现PSR-6,这意味着它的基本API与标准中定义的相同。在开始缓存信息之前,使用任何内置适配器创建缓存池。例如,要创建基于文件系统的缓存,请实例化FilesystemAdapter:
1 2 3
使用ob娱乐下载\组件\缓存\适配器\FilesystemAdapter;$缓存=新FilesystemAdapter ();
现在你可以使用这个缓存池创建、检索、更新和删除项目:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
//通过尝试从缓存中获取一个新项来创建一个新项$productsCount=$缓存->getItem (“stats.products_count”);//为项目赋值并保存$productsCount->集(4711);$缓存->保存($productsCount);//获取缓存项$productsCount=$缓存->getItem (“stats.products_count”);如果(!$productsCount->isHit ()) {/ /……项在缓存中不存在}//获取项存储的值$总计=$productsCount->get ();//删除缓存项$缓存->deleteItem (“stats.products_count”);
有关所有受支持的适配器的列表,请参见缓存池和支持的适配器.