缓存池和支持的适配器
编辑本页警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,现已不再维护。
读本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。
缓存池和支持的适配器
缓存池是缓存项的逻辑存储库。它们执行项目上的所有常见操作,例如保存或查找项目。缓存池独立于实际的缓存实现。因此,即使底层缓存机制从基于文件系统的缓存变为基于Redis或数据库的缓存,应用程序也可以继续使用相同的缓存池。
创建缓存池
缓存池是通过缓存适配器,它们是实现的类AdapterInterface.该组件提供了几个可以在应用程序中使用的适配器。
查找缓存项
缓存池定义了三种方法来查找缓存项。最常见的方法是getItem(键)
,返回由给定键标识的缓存项:
1 2 3 4
使用欧宝娱乐app下载地址\组件\缓存\适配器\FilesystemAdapter;$缓存=新FilesystemAdapter (“app.cache”);$latest欧宝app在哪里找News=$缓存->getItem (“latest_欧宝app在哪里找news”);
如果没有为给定键定义项,则该方法不返回零
值以外的空对象,该对象实现了CacheItem类。
如果需要同时获取多个缓存项,请使用getItems(数组($key1, $key2,…)
方法:
1 2
/ /……$股票=$缓存->getItems (数组(“apple”,“facebook”,“GOOGL”,“微软”));
同样,如果任何键都不表示有效的缓存项,则不会得到零
值,但为空CacheItem
对象。
与获取缓存项相关的最后一个方法是hasItem(键)
,返回真正的
如果有一个由给定键标识的缓存项:
1 2
/ /……$hasBadges=$缓存->hasItem (“user_”.$用户标识.“_badges”);
保存缓存项
保存缓存项的最常用方法是save (),它立即将项存储在缓存中(它返回真正的
是否保存项目或假
如果发生错误):
1 2 3 4
/ /……$userFriends=$缓存->getItem (“user_”.$用户标识.“_friends”);$userFriends->集($用户->getFriends ());$isSaved=$缓存->保存($userFriends);
有时,为了提高应用程序的性能,您可能倾向于不立即保存对象。在这些情况下,使用saveDeferred ()方法将缓存项标记为“准备持久化”,然后调用commit ()方法,当你准备持久化它们全部时:
1 2 3 4 5 6 7 8
/ /……$isQueued=$缓存->saveDeferred ($userFriends);/ /……$isQueued=$缓存->saveDeferred ($userPreferences);/ /……$isQueued=$缓存->saveDeferred ($userRecentProducts);/ /……$isSaved=$缓存->commit ();
的saveDeferred ()
方法返回真正的
当缓存项已成功添加到“持久队列”和假
否则。的commit ()
方法返回真正的
当所有挂起的项都成功保存或假
否则。
移除缓存项
缓存池包括删除缓存项的方法,其中一部分或全部。最常见的是deleteItem (),它删除由给定键标识的缓存项(它返回真正的
当项目被成功删除或不存在时假
否则):
1 2
/ /……$isDeleted=$缓存->deleteItem (“user_”.$用户标识);
使用deleteItems ()方法同时删除多个缓存项(它返回真正的
只有当所有项都被删除时,即使它们中的任何或部分不存在):
1 2
/ /……$areDeleted=$缓存->deleteItems (数组(“category1”,“category2”));
最后,要删除池中存储的所有缓存项,请使用clear ()方法(返回真正的
当所有项目被成功删除):
1 2
/ /……$cacheIsEmpty=$缓存->明确的();
提示
如果在Symfony应用程序中使用缓存组件,您可以使用以下命令删除给定缓存池中的欧宝娱乐app下载地址所有项:
1 2 3 4 5 6 7
$PHP bin/console cache:pool:clear . PHP bin/console cache:pool:clear#清除“缓存”。应用程序池”$PHP bin/控制台缓存:清除cache.app#清除“缓存”。验证”和“缓存”。应用程序池”$PHP bin/console cache:pool:清除缓存。验证cache.app