我想知道如果使用像mongoDB这样的NoSQL数据库,建议使用Memcache。使用MongoDB时建议使用Memcache吗?
回答
使用内存缓存的概念从你有想法源于“额外内存“坐在某处。 MongoDB和MySQL(以及大多数数据库)都会占用每一个他们可以获得的RAM。
对于非常常见的MySQL/Memcache,有很好的文档记载,使用Memcache更多的是减少服务器上的查询负载,而不是加快查询速度。一个好的内存缓存实现基本上只是试图将最常见的数据保存在内存中,这样数据库服务器就可以在更大的内存上流失。
事实上,这是我的经验是使用内存缓存的通常成为依赖内存缓存以保持系统性能。
回到原来的问题,你在哪里有额外的RAM?
如果您在Web服务器上有额外的RAM,则可能可以使用Memcache。当然,你也可以在Web服务器上本地运行Mongo。只需要从主服务器上获取所需的数据。
如果您在其他计算机上有额外的RAM,那么使用memcache并没有什么意义。只需将更多节点添加到MongoDB副本集或分片。这是MongoDB实际照耀的地方。由于分片/复制,您可以向Mongo Horizontally添加更多RAM以提高性能。有了SQL,“添加更多服务器”非常困难,因为连接不能很好地扩展。但是对于Mongo来说,仅仅为一个问题添加更多的节点是完全可能的。
起初没有。如果稍后遇到性能问题,请添加缓存层(memcache)。但是,如果您要使用Redis,则无法获取任何内容,因为Redis已将所有内容存储在内存中。
MongoDB无论如何都将所有东西都存储在内存中,并且以类似的方式工作,这是一个基于键值的系统,但是我相信MongoDB更灵活,因为它允许在内部存储BSON对象。
(只是为了澄清,MongoDB使用BSON,JSON的一种特殊形式,用于存储的所有数据,包括对象中的对象。)
答案取决于您的使用情况。
通常,访问RAM比访问磁盘快几个数量级。
即使是最快的SSD驱动器,其访问速度也要比RAM慢100倍。
现在,我不知道Mongo是否有一个缓存系统(最有可能),或驱逐策略是什么,但作为一个程序员,我更喜欢一个缓存,我可以存储/检索和删除物品随意。因此,我宁愿使用Mongo的缓存解决方案。
总之,它确实取决于您使用这些解决方案。没有一个答案涵盖所有可能的用途。
- 1. 建议在mongodb中使用Hibernate吗?
- 2. 我应该使用memcache吗?
- 3. Google App Engine ndb memcache何时使用memcache
- 4. 建议使用node.js构建论坛吗?
- 5. 为此,建议使用Lucene吗?
- 6. 建议使用CSS框架吗?
- 7. 建议使用Wild Card SSL证书吗?
- 8. 建议使用GAE类型吗?
- 9. 我可以使用$ _SESSION作为memcache吗?
- 10. 使用的建议
- 11. 建议使用jQuery
- 12. Membership.GetUser()建议使用?
- 13. 建议使用ServiceStack.ORMLite
- 14. 建议使用MFC?
- 15. 使用java在Memcache中创建区域
- 16. 不建议使用CMS构建Web应用程序吗?
- 17. 建议使用片段构建所有应用程序吗?
- 18. 在php中使用MVC时的建议
- 19. 关于使用定时器的建议
- 20. 使用Resharper时关闭Visual Studio建议?
- 21. 什么时候不使用memcache
- 22. 使用Google建议使用JavaScript
- 23. 无法使用Mongodb协议在Azure DocumentDb中创建索引
- 24. MongoDB/Mongoose中连接的建议使用寿命是多少?
- 25. 使用Memcache协议存储的Apache Ignite值的大小限制
- 26. MongoDB建议请求
- 27. 建议使用jQuery和PHP
- 28. 使用FORMAT_MODULE_PATH的建议
- 29. 使用搜索建议
- 30. Google Code SVN使用建议
该功能让我更喜欢mongoDB比其他键值数据库:) – 2010-11-25 14:21:21