我需要某种缓存机制吗?

时间:2011-10-05 16:16:11

标签: php mysql

我已经开始构建一个应用程序,其中一部分允许用户拆分测试和旋转商品,设置特定网址的最小和最大流量以及重置时间。

因此,例如,一位用户可能会输入网址http://www.example.com,最少90次点击,最多150次,以及重置1 hour之前的时间。每小时,将从两者之间选择一个数字,并成为该小时的新命中数量。一旦达到http://www.example.com的点击次数,http://www.example.com将在列表中删除2,500+,直到下次重置为止。

总而言之,在页面加载时,至少会在不同的点上进行3-4次数据库查询。

以下是我的问题:

这是否具有大流量的可持续性,比如每小时{{1}}请求没有某种缓存机制(这几乎不可能构建,因为命中需要准确并根据要求更新,所以我不看看如何在这个实例中构建缓存)?

决定这是否可行的变量/因素是什么?

我有点意识到我的问题,“iffy”,所以如果你需要,请务必澄清:)!

任何建议,意见和答案都将不胜感激!

修改

哇,4个接近投票,但是没有人发帖说出原因。我已经问了一个相关的问题,虽然它可能不是很好,但我想知道它是如何不符合SO准则的。

3 个答案:

答案 0 :(得分:1)

您可以使用APC或Xcache之类的东西将数据保存在RAM中,并通过每小时crontab保存所有内容

这将是一种减少负载并提高网站速度的方法,但如果您有太多数据需要保存,它可能会破坏您的RAM。 如果数据尚未保存并且您丢失了RAM内容,则存在数据丢失的风险

如果您只需要为每个网站保存+ 1 /每次点击,这将是您观察到的网站的简单数组和点击次数(可能是90到150之间的数字?),RAM中的缓存将是最好的方法

另一种方法是使用文件,这些文件也比SQL快,并且比不断发送SQL查询的负载更少

我希望我能正确理解你的问题

答案 1 :(得分:0)

在我看来,确定您是否需要缓存的信息太少。一方面,缓存很少是一个坏主意(在某些情况下它确实可能是坏的),另一方面,您可能认为,它不值得开发开销。根据我的经验,它很大程度上取决于存储的数据以及数据在数据库中的存储方式。如果你有一个单独的表,你只需要从中获取数据并使用MyISAM表类型,那么事情就会变得非常快。如果你必须加入并决定使用InnoDB,那么事情就会变慢。它也很大程度上取决于您可用的基础设施等等。在我看来,有太多未决问题需要决定是否需要缓存。

答案 2 :(得分:0)

可以解决的一种方法是将数据库本身转换为缓存。

,例如,命中数据总量(1小时)为300 MB。您可以将600 MB分配给DB服务器的IO缓冲区。

这种方式,数据几乎总是在内存中“缓存”。如果不在系统中添加新组件,这将提供非常好的性能。当记录新的命中时,该信息将记录在磁盘上。

但后续页面点击会经常查询(每小时2,500多个请求),DB服务器会决定将该行保留在内存中(技术上是包含该行的页面)。

这样,DB服务器本身就可以执行缓存。

有关如何使用PostgreSQL执行此操作的一些提示:

http://www.postgresql.org/docs/8.2/static/monitoring-stats.html