我想知道在使用像mongoDB这样的NoSQL数据库时是否建议使用Memcache.
使用memcache的概念源于你有"额外的RAM"坐在某处的想法.MongoDB和MySQL(以及大多数数据库)都将占用他们可以获得的每兆字节RAM.
在很常见的MySQL /内存缓存的情况下,这是非常有据可查的,使用内存缓存更多的是在服务器上降低查询负载比它关于加快查询.一个好的memcache实现基本上只是试图将最常见的数据保存在内存中,以便数据库服务器可以在更大的东西上流失.
事实上,根据我的经验,使用 memcache通常会依赖于 memcache来维护系统性能.
那么回到最初的问题,你在哪里有额外的RAM?
如果您在Web服务器上有额外的RAM,则可以使用Memcache.当然,您也可以在Web服务器上本地运行Mongo.只需从主服务器中获取所需的数据.
如果你在其他计算机上有额外的RAM,那么使用memcache并不是真的有意义.只需向MongoDB副本集或分片添加更多节点即可.这是MongoDB实际上闪耀的地方.由于分片/复制,您可以向Mongo水平添加更多RAM以提高性能.使用SQL,"只添加更多服务器"非常困难,因为连接不能很好地扩展.但是对于Mongo来说,很可能只是为问题"添加更多节点".
MongoDB无论如何都将所有东西存储在内存中,并且以类似的方式工作,是一个基于键值的系统,但是我相信MongoDB更灵活,因为它允许在自己内部存储BSON对象.
(为了澄清,MongoDB使用BSON,一种特殊形式的JSON,用于存储其所有数据,包括对象中的对象.)