缓存池和支持的适配器

编辑本页

警告:您正在浏览的文档欧宝体育电话欧宝娱乐app下载地址Symfony 3.3,现已不再维护。

本页的更新版本用于Sy欧宝娱乐app下载地址mfony 6.2(当前稳定版本)。

缓存池和支持的适配器

缓存池是缓存项的逻辑存储库。它们执行项目上的所有常见操作,例如保存或查找项目。缓存池独立于实际的缓存实现。因此,即使底层缓存机制从基于文件系统的缓存变为基于Redis或数据库的缓存,应用程序也可以继续使用相同的缓存池。

查找缓存项

缓存池定义了三种方法来查找缓存项。最常见的方法是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
此工作,包括代码示例,是根据创作共用BY-SA 3.0许可证。