symfony - 在学说实体保存期间更新/插入缓存条目

标签 symfony caching doctrine-orm redis

有大量关于如何在 Doctrine 中使用结果缓存的文档。但是,我无法找到关于如何在实体保存期间更新/插入缓存的单个文档。 目前我正在使用更新。

$entityManager = $this->getEntityManager();
$cacheDriver = $entityManager->getConfiguration()->getResultCacheImpl();

$cacheDriver->delete($key);

$searchEntity->setUpdatedAt(new \DateTime())
             ->setData([]);

$entityManager->persist($searchEntity);
$entityManager->flush();

并插入类似的东西

$searchEntity = new Entity;
$entityManager->persist($searchEntity);
$entityManager->flush();

但是在这两种情况下,我都想刷新/插入缓存。有什么方法可以在不手动创建/更新缓存条目的情况下实现这种简单易行的方法。

最佳答案

创建了一个 social network使用包含 Doctrine 的 Symfony 标准版。我遇到过这个问题,当时我觉得在插入/更新后继续删除缓存和查询数据库是一种浪费,但要插入/更新的数据随时可用。

我完全同意,对此没有明确的文档。在我数周的研究中,除了在数据库插入时手动构建缓存外别无选择,它是一个数组数组,即多维数组。我必须查询数据库并创建一个缓存条目,为其分配一个值,将其传递给 twig 并在我的开发环境中进行 var 转储以查看它的外观并在成功插入时模仿其结构(您可以为创建一个监听器这个)。由于我的社交网络是关于折扣的,每次有人被点赞时,我都会通过在该数组中搜索匹配的 id 键来更新缓存,然后通过添加(或减去 1)来更新其总点赞数,这同样适用于总评论和分享等. 当我开始使用 Apc 缓存时,我已经成功地测试了这一点,然后是 Memcached,现在我当前的缓存是 Redis,它仍在工作。

请引用我的老question对于一些示例代码

关于symfony - 在学说实体保存期间更新/插入缓存条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054645/

相关文章:

symfony - symfony 2 表单中的复选框

php - 交响乐/Doctrine

Symfony2 从与另一个 oneToMany 相关的实体 oneToMany 获取值

javascript - 使用带有 symfony 的 AJAX 按类别过滤部分时出错

android - 应用程序长时间恢复时应用程序崩溃

c++ - 查找表与运行时计算效率 - C++

java - Quarkus Panache Hibernate : How to clear the cache, 使实体世界与数据库状态匹配?

doctrine-orm - select() 方法中 expr() 的 QueryBuilder 别名

php - Doctrine2 order by count many to many with many left join

symfony - 如何在学说中启用第二级缓存?