缓存组件

编辑该页面

警告:你浏览的文档欧宝官网下载appob娱乐下载Symfony 4.3,不再维护。

这个页面的更新版本Symfob娱乐下载ony 6.2(当前的稳定版本)。

缓存组件

缓存组件提供的功能包括简单高级高速缓存需求。它实现了PSR-6缓存的合同为最大的互操作性。它是专为性能和弹性,附带准备为最常见的缓存后端使用适配器。它支持基于失效和缓存蜂拥通过锁定和保护早期失效。

提示

组件还包含适配器PSR-6之间转换,PSR-16和教义缓存。看到适配器PSR-6和PSR-16缓存之间的互操作性教义缓存适配器

安装

1
美元作曲家需要symfony /缓存ob娱乐下载

请注意

如果你安装这个组件之外的Symfony应用程序,你必须要求ob娱乐下载供应商/ autoload.php文件在你的代码,使作曲家提供的类加载机制。读这篇文章为更多的细节。

缓存合同与PSR-6

该组件包括两个不同方法缓存:

PSR-6缓存:
一个通用的缓存系统,包括缓存池和缓存“物品”。
缓存的合同:
更简单更强大的缓存值重新计算基于回调的方法。

提示

使用缓存契约方法建议:它需要更少的代码样本和默认提供缓存踩踏的保护。

缓存的合同

所有适配器支持缓存的合同。他们只包含两个方法:get ()delete ()。没有设置()方法,因为get ()获取和设置值缓存方法。

你首先需要的是缓存实例化一个适配器。的FilesystemAdapter本例中使用:

1 2 3
使用ob娱乐下载\组件\缓存\适配器\FilesystemAdapter;美元缓存=FilesystemAdapter ();

现在您可以使用这个对象检索和删除缓存数据。的第一个参数get ()是一个关键的方法,一个任意字符串,你联想到缓存的价值,这样你就可以检索。第二个参数是一个PHP调用时执行关键是没有发现在缓存中生成并返回值:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
使用ob娱乐下载\合同\缓存\ItemInterface;/ /调用缓存错过才会被执行。美元价值=美元缓存- >get (“my_cache_key”,函数(ItemInterface美元){美元- >expiresAfter (3600年);/ /……做一些HTTP请求或重计算吗美元computedValue=“foobar”;返回美元computedValue;});回声美元价值;/ /“foobar”/ /……并删除缓存键美元缓存- >删除(“my_cache_key”);

请注意

使用缓存标签删除多个键。阅读更多缓存失效

缓存还带有内置的合同踩踏事故预防。这将删除CPU峰值的时刻当缓存是冷的。如果一个示例应用程序花5秒为1小时计算的数据缓存访问这些数据每秒钟10倍,这意味着你主要有缓存命中率和一切都很好。但在1小时之后,我们得到了10个新冷缓存的请求。所以这些数据重新计算。接下来的第二个同样的事情发生。所以数据计算大约50次缓存又温暖。这就是你需要预防踩踏事件

第一个解决方案是使用锁定:只允许一个PHP进程(中)来计算一个特定的关键。锁定是内置在默认情况下,所以你不需要做任何事情除了利用缓存合同。

第二个解决方案也是内置在使用缓存合同:而不是等待完整的延迟到期前一个值,再计算它的截止日期之前。的概率早期失效算法随机假货缓存错过一个用户,而另一些仍在缓存值。你可以控制其行为的第三个可选参数get (),这是一个浮动值称为“测试版”。

默认情况下,β1.0和更高的价值意味着早期的验算。将其设置为0禁用早期验算并设置它强制立即验算:

1 2 3 4 5 6 7 8 9
使用ob娱乐下载\合同\缓存\ItemInterface;美元β=1.0;美元价值=美元缓存- >get (“my_cache_key”,函数(ItemInterface美元){美元- >expiresAfter (3600年);美元- >标签([“tag_0”,“tag_1”]);返回“……”;},美元β);

通用缓存(PSR-6)

使用通用PSR-6缓存能力,你需要学习它的关键概念:

一个单元的信息存储为一个键/值对,关键是惟一标识符的信息和价值是其内容;看到缓存项文章为更多的细节。
一个逻辑库缓存项。所有缓存操作(储蓄项目,寻找项目,等等)通过执行池。应用程序可以定义需要尽可能多的池。
适配器
它实现了实际缓存机制来存储文件系统中的信息,在数据库等。该组件提供了几个可以使用适配器通用缓存后端(APCu复述,教义,PDO,等等)。

基本用法(PSR-6)

这部分的组件的实现PSR-6,这意味着其基本API文档中定义的一样。开始缓存信息之前,创建缓存池使用任何内置的适配器。例如,基于文件系统创建一个缓存,实例化FilesystemAdapter:

1 2 3
使用ob娱乐下载\组件\缓存\适配器\FilesystemAdapter;美元缓存=FilesystemAdapter ();

现在,您可以创建、检索、更新和删除项目使用这个缓存池:

1 2 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”);

所有支持的适配器的列表,看看缓存池和支持的适配器

这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。