缓存失效
编辑该页面警告:你浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,不再维护。
读这个页面的更新版本Symf欧宝娱乐app下载地址ony 6.3(当前的稳定版本)。
缓存失效
缓存失效删除所有缓存条目的过程相关的变化的状态模型。最基本的失效是直接项目删除。但当主要资源的状态分布在多个缓存条目,让他们保持同步是很困难的。
Symf欧宝娱乐app下载地址ony缓存组件提供两种机制来帮助解决这个问题:
使用缓存的标签
3.2
基于标签的失效是在Symfony 3.2中引入的。欧宝娱乐app下载地址
受益于基于标签的失效,您需要适当的标签附加到每个缓存项。每个标记是一个普通的字符串标识符,您可以使用在任何时间触发的所有项目与这个标签。
贴标签的缓存条目,您需要使用标签()方法由缓存条目,实现缓存返回的适配器:
1 2 3 4 5 6
美元项=美元缓存- >getItem (“cache_key”);/ /……/ /添加一个或多个标记美元项- >标记(“tag_1”);美元项- >标记(数组(“tag_2”,“tag_3”));美元缓存- >保存(美元项);
如果美元的缓存
实现了TagAwareAdapterInterface,您可以通过调用缓存条目无效invalidateTags ():
1 2 3 4 5
/ /无效所有项目相关的“tag_1”或“tag_3”美元缓存- >invalidateTags (数组(“tag_1”,“tag_3”));/ /如果你知道缓存键,你也可以直接删除条目美元缓存- >deleteItem (“cache_key”);
使用标记无效非常有用当跟踪缓存键变得困难。
标签意识到适配器
存储标签,需要用适配器的一个缓存TagAwareAdapter类或实现TagAwareAdapterInterface和它唯一的invalidateTags ()方法。
的TagAwareAdapter类实现瞬时失效(时间复杂度O (N)
在哪里N
是无效的数量标签)。它需要一个或两个缓存适配器:首先需要一个用于存储的缓存条目;第二个可选一个用于存储标签及其失效版本号(概念上类似于他们最新的失效日期)。当只使用一个适配器,物品和标签都是存储在同一个地方。通过使用两个适配器,您可以如一些大的缓存条目存储在文件系统或数据库中并保持标签在复述,数据库同步所有方面,很快失效检查:
1 2 3 4 5 6 7 8 9 10
使用欧宝娱乐app下载地址\组件\缓存\适配器\TagAwareAdapter;使用欧宝娱乐app下载地址\组件\缓存\适配器\FilesystemAdapter;使用欧宝娱乐app下载地址\组件\缓存\适配器\RedisAdapter;美元缓存=新TagAwareAdapter (/ /适配器的缓存条目新FilesystemAdapter (),/ /适配器标签新RedisAdapter (复述:/ / localhost的));
这项工作,包括代码示例,许可下Creative Commons冲锋队3.0许可证。