2012-02-16 41 views
0

我想使用缓存机制来帮助提高PHP应用程序的性能,并将它看作是一个不错的选择。然后看着它,我发现一个更一般的问题与缓存...创建记录缓存的最佳方式(在本例中为Memcache)

但我看到的问题是,如果在例子中,我只是简单地使用SQL语句作为缓存结果的哈希键,然后有一个可能出现重复记录的情况。如果SQL A将获取记录1,2,4并且SQL B将获取记录2,3和6,则会发生这种情况。在这种情况下,记录2将在两个结果集中。如果我简单地检索记录,然后链接到相同的记录 - 我没有真正获得任何性能提升,并且可能会减慢应用程序的速度。

其他人一定会遇到这个 - 所以我不知道有什么人会建议,以更好的方式管理缓存。或者它是简单的不去缓存,并总是依赖于数据库?

谢谢。

回答

2

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

+0

这很有道理 - 虽然它提示了一个新问题。如果我从SQL A更改记录2,是否应该使SQL B的缓存无效?如果不是,则SQL B中的值将过期。或者,如果我更新任何记录,这是否升级?我是否扔掉了所有缓存的结果? – 2012-02-16 13:00:33

+0

这就是它涉及到缓存策略的细节的地方,它更高效。对于不经常更新,只需在更新时清理整个缓存就可以了。对于热门网站的频繁更新,每隔x分钟清理整个缓存可能是有意义的,因此整个网站在x分钟内似乎是静态的。等等,有很多可能的策略。 – deceze 2012-02-16 23:01:41

相关问题