7

我是在大型网站上使用 Memcached 等分布式缓存解决方案的新手,我有几个问题,请有经验的人发表评论。

  1. 显然,我可以放入缓存的数据量取决于服务器 RAM。假设我有足够大的服务器场和 RAM,在我开始看到性能下降之前,我可以放入 memcached 的最大对象数量吗?我问的原因是,我认为如果我将数百万个对象放入 memcached 中,索引和查找对象是否需要更长的时间?这里有没有可以画的线。

  2. 我应该在 memcached 中缓存更小但更多的对象,还是更大但更少的对象?较小的对象确实涉及到 DB 的更多往返来获取它们,但它更灵活且更易于编程。

非常感谢,

射线。

4

2 回答 2

4

Memcached 在内部使用哈希进行 O(1) 查找 - 它旨在尽可能少地做复杂的工作。

至于要缓存的内容,无论大小,它实际上是关于您需要存储什么可以节省您的精力(请记住,它是一个大而愚蠢的缓存,如果您更改一个也被提及的部分,您必须帮助它保持同步到别处)。在它为 Livejournal.com 编写的原始网站上,有意义的最大块是一个完整的日记条目 - 作为允许查看该特定帖子的任何人都可以使用的完成的 HTML。

我已经将它用于一些非常小的条目——实际上是一个针对成员 ID 的单个数字,但我正在使用单个数据库查询而不是根据需要一次生成数千个这样的条目。

如果您知道您将只存储非常大或非常小的项目,您可以稍微优化守护程序,但是对于许多小条目,它有足够的智能将空的大块内存分成更小的块以供使用。

于 2009-04-04T17:05:35.063 回答
3

假设我有足够大的服务器场和 RAM,在我开始看到性能下降之前,我可以放入 memcached 的最大对象数量吗?

理想情况下,您的缓存应始终 100% 满。memcached 使用散列算法来查找键,据我所知,存储更多键不应该有性能损失。

我应该在 memcached 中缓存更小但更多的对象,还是更大但更少的对象?

我想更大但更少的对象会更好地减少数据库和缓存查找的时间,但你应该根据具体情况来考虑。除非您知道性能差异会很大,否则我建议您先从最简单的开始,如果这还不够,则从那里开始工作。

于 2009-03-31T16:32:14.200 回答