Symfonyob娱乐下载 3.2新增功能:带标记的缓存
2016年7月5日·发表的哈维尔Eguiluz
警告:这篇文章是关于一个不受支持的Symfony版本。ob娱乐下载有些信息可能已经过时了。阅读最新的Symfony文档ob娱乐下载.
提供的
尼古拉斯Grekas
在# 19047.
在Syob娱乐下载mfony 3.1中,我们添加了一个新的缓存组件那是严格执行的PSR-6:缓存接口标准。在Syob娱乐下载mfony 3.2中,我们决定用一些标准中没有定义的特性来改进缓存。
第一个新特性是基于失效创建带标记的缓存。假设您的应用程序是一个在缓存中存储用户评论的电子商务应用程序。当保存这些评论时,你现在可以将标签与它们关联:
1 2 3 4 5 6 7 8 9
使用ob娱乐下载\组件\缓存\适配器\FilesystemAdapter;$缓存=新FilesystemAdapter ();$审查=$缓存->getItem (“评论- - - - - -”.$reviewId);$审查->集(“……”);$审查->标签([“评论”,“产品”,“产品- - - - - -”.$productId]);$缓存->保存($审查);
缓存的评论与三个不同的标签相关联,可用于使相关项无效:
12 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
//评论的HTML结构已经改变://使所有评论无效$缓存->invalidateTags (“评论”);//在商店中启用特价://使与产品相关的任何东西无效$缓存->invalidateTags (“产品”);// 123号产品的数据发生了变化://使与该产品相关的任何东西无效$缓存->invalidateTags (“产品- 123”);//一个主要的存储更新正在被部署://使所有与产品和评论相关的信息无效$缓存->invalidateTags ([“产品”,“评论”]);//在使前面的任何标记无效之后,该项不再存在//在缓存中可用:$缓存->getItem (“评论- - - - - -”.$reviewId)->isHit ();//返回false
Cache组件现在定义了TagAwareAdapterInterface
向自己的缓存适配器和添加基于标记的失效TaggedCacheItemInterface
允许标记缓存项。此外,它还包括一个TagAwareRedisAdapter
在使用Redis时启用基于标签的无效。
发表在#生活在边缘
评论
蒂埃里Goettelmann
2016年7月5日说在08:24
我真的很喜欢这些新功能,一个又一个版本……谢谢!
Alistair烧伤
2016年7月5日说在塔利班
计算机科学中只有两件难事:缓存失效和命名。
——菲尔·卡尔顿
感谢这个特性,它应该使缓存失效不那么困难!
我在过去使用长缓存键名和regexp缓存清理实现了类似的东西,这当然更整洁,更容易遵循!
——菲尔·卡尔顿
感谢这个特性,它应该使缓存失效不那么困难!
我在过去使用长缓存键名和regexp缓存清理实现了类似的东西,这当然更整洁,更容易遵循!
Jeffrey Layanto
2016年7月5日说11点11分
在3.2发布的时候,除了redis之外,还会有标签感知适配器吗?
尼古拉斯Grekas
2016年7月5日说在他们
@杰夫,你需要哪一个?
米甲Traczewski
2016年7月5日说在阿联酋
做得好! !
Jeffrey Layanto
2016年7月5日说在23:07
@Nicolas Grekas。标记感知适配器是否依赖于后端可用的某些特性,或者所有的适配器都可以标记感知?
从Symfonyob娱乐下载 3.1开始,Apcu将在可用的情况下自动使用,假设可能的话,如果Apcu适配器能够实现标签感知,那就太好了。
从Symfonyob娱乐下载 3.1开始,Apcu将在可用的情况下自动使用,假设可能的话,如果Apcu适配器能够实现标签感知,那就太好了。
Jeffrey Layanto
2016年7月5日说在23:51
缓存组件是否包含在分析器中的信息?
@Jeff有一个新的问题要讨论如何在Profiler中集成缓存:https://github.com/symfony/symfony/issues/19297ob娱乐下载
Saidou GUEYE
2016年7月7日说在03:47
不错的功能。没有复杂的键命名,只是允许它们失效。
尼古拉斯Grekas
2016年7月11日说点23
@Jeff Varnish不在范围之内。关于标签的后弯,大多数都有必需的原语(原子增量)。然而apcu可能不是最好的,因为标签无效会导致碎片,而且共享后弯是最有用的(用于同时使所有前端无效)。不过,任何人都可以提交他们的pr
Jeffrey Layanto
2016年7月14日说在22:34
@Nicolas我认为3.2也应该包括标签感知文件系统适配器。文件系统可以用于开发,而redis可以用于生产。只需要改变配置。Yml切换。
评论截止。
为了确保评论保持相关性,旧帖子将被关闭。
Quentin Fahrner is a certified Symfony engineer.
Get certified! Online exams available in all countries.
Register Now