你应该什么时候开始使用Memcached?

7

我开始学习如何在PHP中使用Memcached,但我想知道:是否有一个使用它的起点?缓存数据始终更有效吗?还是只有在您的网站获得一定数量的点击后才会变得有效?显然,Memcached存在一些开销,那么何时速度优势超过这些开销呢?

非常感谢您提供的任何建议。

4个回答

9
当你的网站/服务器受到影响时,应开始使用memcached。
因此,当你每天只有100个访问者,而你的网站仍然能够快速响应时,不必费心使用它。
但是,当你的网站每页运行时间接近200毫秒或更长,并且网站感觉很慢时,你应该使用一些PHP分析工具(XDebug集成了一个,你可以与WinCacheGrind或KCacheGrind结合使用)来查找瓶颈。特别是缓存数据库请求应该能够节省一些负载时间。

1
我认为使用响应时间来量化是很困难的,更应该基于用户体验和他们感觉变慢的时间来评估。 - DreamWerx
好的,我没有解释清楚,我会改正。我的意思是脚本运行时间。 - Sebastian Hoitz
此外,您仍然可以使用APC作为数据缓存(用于缓存数据库查询等)。 APC数据缓存比memcached快5-6倍。只有在您从多个服务器(集群)提供数据并且用户必须能够访问相同的数据(例如会话)时,才会使用memcached。 - Stann

5
当涉及性能优化时,第一条规则是:不要在没有必要的情况下进行优化!
如果您没有性能问题,那么您就不需要进行优化。其他好的规则包括:
- 在编写应用程序完成之前不要进行优化。在开发过程中很少知道真实世界的性能问题将在哪里出现,并且只会使您的代码变得更加松散和更难修改,当您需要在后面进行更改时。 - 使用分析器或其他测量特定代码块的方式来实际测量需要长时间的部分,并对这些部分进行优化。不要只是猜测需要长时间的部分,而是要实际测量它们。

3

如果您使用MySQL作为数据库,那么在高峰期间可以在MySQL控制台上运行show processlist命令。如果有许多来自PHP端的查询等待超过500毫秒,则是时候转向memcached了。


1

在考虑是否应该使用Memcached进行缓存之前,首先要考虑何时/何种情况/是否进行缓存。

当您有一些“对象”用于响应大量请求,需要大量的数据库读取才能创建。由于经常重新创建该“对象”,导致您的网站无法跟上其负载。此外,您还需要为要缓存的项目定义一个良好的键。

您要缓存的“对象”必须比用于创建它的数据库行更频繁地读取,否则缓存的好处可能会小于管理缓存所需的成本,因为数据稍有变化就需要更新缓存。

缓存单个数据库行将不会给您带来匹配的好处。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接