不依赖像memcached这样的缓存系统(对于动态网站)是不是很疯狂?

时间:2009-08-27 03:57:37

标签: php python memcached scalability

我刚刚审查了我的一个客户端应用程序,它使用了一些过时的PHP框架,它根本不依赖于缓存,而且几乎完全依赖于数据库。

我想我只是从头开始重写它,因为它真的过时了,在这次重写中我想实现一个缓存系统。如果有人事先做过这个话,我会得到一些指示,这很好。

  • 重写将在PHP或Python中完成
  • 如果我可以在此实施之前和之后进行分析,那将会很好。
  • 我有自己的服务器,所以我不受共享主机的限制

4 个答案:

答案 0 :(得分:10)

缓存,当它正常工作(==高命中率)时,是少数能够真正帮助延迟的通用技术之一 - 问题中较难的部分通常描述为“性能”。您可以通过在问题上投入更多硬件来增强 QPS (每秒查询数)性能指标 - 但延迟不会以这种方式工作(即,它不需要一个月的时间来制作一个婴儿,如果你让九个母亲为其工作; - )。

但是,缓存使用的主要资源通常是内存(可能是RAM或磁盘)。正如您在评论中提到的那样,您观察到的唯一性能问题是内存使用,缓存无济于事:它只会将某些部分内存用于缓存目的,而作为“普通基金”则更少可用。作为加利福尼亚州的居民,我亲眼目睹了当有太多资源被指定用途时会发生什么,我无法以良心的态度推荐这样的行动方案! - )

答案 1 :(得分:6)

如果您的网站性能良好,则没有理由添加缓存。许多站点可以完全没有任何缓存,或者移动到基于文件系统的缓存。它只是需要memcached的超高流量站点。

什么是“疯狂”的代码架构(或缺乏架构)使得后者添加缓存变得困难。

答案 2 :(得分:3)

由于Python是你的选择之一,我会选择Django。内置缓存机制,我一直在使用this debug_toolbar来帮助我进行开发/分析。

顺便说一句,memcached按照你描述的方式工作。它将唯一键映射到内存中的值,它与.csh文件或数据库查询无关。你存储在一个值中的是将要缓存的内容。

哦,只有存在(或将会出现)性能问题时,缓存才有价值。如果您不需要缓存,则“不依赖”缓存没有任何问题。过早优化是99%的邪恶!

答案 3 :(得分:0)

根据代码库和流量模式的特定性质,您甚至可能不需要重新编写整个站点。如果可以通过缓存绕过99.9%的页面请求,那么效率极低的代码并不是什么大问题。

选择PHP或Python时,请确保弄清楚您将在何处托管该网站(或者您甚至可以进行该呼叫)。我的许多客户已经在网络服务器上设置,Python不是一个选项。您还应该确保您想要与之交互的任何数据库/外部程序在PHP或Python中得到很好的支持。