如何'refresh' apc 在高流量应用中缓存?

How to 'refresh' apc cache at high traffic application?

我的 symfony 应用程序有大约 500 个在线用户,并且所有页面上都有一些文章列表。我将查询和结果存储在 APC 中,管理员在某些数据更改时将其手动删除。这是问题所在:

如果我是正确的,如果我的 500 个用户中的每一个在删除缓存时刷新页面并尝试更新它(通过首先查询数据库),其他 499 个用户在缓存完成之前破坏了数据库。

如何避免这种情况? APC 中是否有任何选项可以阻止它,或者我需要手动管理它?如果新缓存尚未准备好,最好的选择应该是为旧缓存提供服务。

不幸的是,恐怕没有开箱即用的解决方案。 如果您查看 Memcached Bundle,他们会实施一个解决方案来避免此问题:enter link description here

也许您可以启发编写自己的解决方案。

如果对所有用户通用,您可以通过后台脚本为缓存准备数据并通过 cron 执行。也可以将版本添加到此数据的缓存键中,也可以将版本存储在 apc 中。在为缓存准备数据时,增加版本并使用新版本保存新数据,而不是在 apc 中更改版本。