使用MongoDB时是否建议使用Memcache?

时间:2010-11-25 11:15:19

标签: mongodb memcached

我想知道在使用像mongoDB这样的NoSQL数据库时是否建议使用Memcache。

4 个答案:

答案 0 :(得分:56)

使用memcache的概念源于你有“额外的RAM”坐在某处的想法。 MongoDB和MySQL(以及大多数数据库)都将占用他们可以获得的每个兆字节的RAM。

对于非常常见的MySQL / Memcache,很好地记录了使用Memcache更多的是减少服务器上的查询负载而不是加速查询。一个好的memcache实现基本上只是试图将最常见的数据保存在内存中,这样数据库服务器就可以在更大的东西上流失。

事实上,根据我的经验,使用内存缓存通常会成为依赖内存缓存以维持系统性能。

回到最初的问题,你在哪里有额外的RAM?

如果您在Web服务器上有额外的RAM,则可以使用Memcache。当然,您也可以在Web服务器上本地运行Mongo。只需从主服务器中获取所需的数据。

如果你在其他计算机上有额外的RAM,那么使用memcache并不是真的有意义。只需向MongoDB副本集或分片添加更多节点即可。这是MongoDB实际上闪耀的地方。由于分片/复制,您可以向Mongo水平添加更多RAM以提高性能。使用SQL,“只添加更多服务器”非常困难,因为连接不能很好地扩展。但是使用Mongo,很有可能只是“为问题添加更多节点”。

答案 1 :(得分:11)

MongoDB无论如何都将所有东西存储在内存中,并且以类似的方式工作,是一个基于键值的系统,但我相信MongoDB更灵活,因为它允许在自己内部存储BSON对象。

(为了澄清,MongoDB使用BSON,一种特殊形式的JSON,用于存储其所有数据,包括对象中的对象。)

答案 2 :(得分:3)

起初没有。如果遇到性能问题,请稍后添加缓存层(memcache)。但是,如果您打算使用Redis,那么您将无法获得任何收益,因为Redis已经将所有内容存储在内存中。

答案 3 :(得分:1)

答案取决于您的使用案例 通常,访问RAM比访问磁盘快几个数量级 即使是速度最快的SSD驱动器,其访问速度也比RAM快100倍。

现在,我不知道Mongo是否有适当的缓存系统(很可能是这样),或驱逐政策是什么,但作为程序员,我更喜欢我可以存储/检索的缓存随意删除项目。因此,我更喜欢使用Mongo的缓存解决方案。

总之,这实际上取决于您使用这些解决方案的内容。没有一个答案可以涵盖所有可能的用途。