Php 创建记录缓存的最佳方法(本例中为Memcache)

Php 创建记录缓存的最佳方法(本例中为Memcache),php,caching,memcached,Php,Caching,Memcached,我想使用缓存机制来帮助提高PHP应用程序的性能,而memcache似乎是一个不错的选择。然后研究它,我发现缓存有一个更普遍的问题 但我看到的问题是,如果像在示例中一样,我只是使用SQL语句作为缓存结果的散列键,那么可能存在重复记录的情况。如果SQL A获取记录1、2、4,而SQL B获取记录2、3和6,则会发生这种情况。在这种情况下,记录2将在两个结果集中。如果我只是检索记录,然后链接到同一个记录,那么我的性能并没有得到任何提高,可能会减慢应用程序的速度 一定是其他人遇到过这种情况,所以我想知道

我想使用缓存机制来帮助提高PHP应用程序的性能,而memcache似乎是一个不错的选择。然后研究它,我发现缓存有一个更普遍的问题

但我看到的问题是,如果像在示例中一样,我只是使用SQL语句作为缓存结果的散列键,那么可能存在重复记录的情况。如果SQL A获取记录1、2、4,而SQL B获取记录2、3和6,则会发生这种情况。在这种情况下,记录2将在两个结果集中。如果我只是检索记录,然后链接到同一个记录,那么我的性能并没有得到任何提高,可能会减慢应用程序的速度

一定是其他人遇到过这种情况,所以我想知道有没有人会建议更好的缓存管理方法。还是简单地不去缓存,总是依赖数据库


谢谢。

为什么还要担心这个呢?关键是查询是缓存的。如果两个不同查询的结果部分重叠,那么就这样吧。除非这些结果的大小是很多兆字节,因此占用了很多空间,否则这并不重要。重要的是,如果您想再次运行同一个查询,您不需要这样做,因为结果已经被缓存。

这是有道理的,尽管它会提示一个新问题。如果我从SQL A更改记录2,我是否应该“使”SQL B的缓存无效?如果不是,则SQL B中的值已过期。或者,如果我更新了任何记录,这会升级到吗?我会扔掉所有缓存结果吗?这就是缓存策略的细节所在,哪个更有效。对于不频繁的更新,只需在任何更新时清理整个缓存是有意义的。对于流行站点上的频繁更新,每x分钟清理一次整个缓存是有意义的,因此整个站点在x分钟内看起来是静态的。等等,等等。有很多可能的策略。我一直在考虑删除这个问题一段时间了(因为它的问题很糟糕,可能不值得更新)。因为你是唯一受影响的人,我只是想问一下这是否可以,我怎么做。在我看来,你也可以保持原样。不确定您是否可以删除它,并给出肯定的回答。你想让我删除它吗?