我要建立一个被设计为“观察”了很多页,但要少得多用户将“写”到数据库中。 例如,只有1 100个用户可以张贴在我的网站他的新闻,其余的将刚刚看新闻。
在上述情况下,100个相同的查询会,当他们访问我的主页,而实际的数据库变化不大进行。 其实这些查询的99是电脑电源的浪费。 是否有可以缓存第一个查询结果的任何方法,而当他们发现在短时间内相同的查询,可以提供高速缓存的结果?
我使用MongoDB的和龙卷风。 然而,一些帖子说,MongoDB的没有做缓存。
制作喜欢的东西Nginx的静态,缓存的HTML不是首选,因为我想龙卷风每次呈现一个个性化页面。
电机的作者(蒙戈+龙卷风)包在这里给他的缓存分类列表的例子: http://emptysquare.net/blog/refactoring-tornado-code-with-gen-engine/
基本上,他定义类别的全局列表和查询数据库,以填补它; 然后,每当他需要在自己的网页的类别,他检查列表:如果存在的话,他使用它,如果没有,他再次查询并填充它,他有它设置为无效时,他插入到数据库列表。 ,但根据您的使用情况,您可以创建一个全局超时变量来跟踪,当您需要重新查询下一个。 如果你正在做的事情复杂化,这有可能会失控,但如果它只是一个最新的帖子什么的清单,我认为这将是罚款。
我使用MongoDB的和龙卷风。 然而,一些帖子说,MongoDB的没有做缓存。
我不知道谁说,但MongoDB的确实有一种方法来缓存查询,其实它采用了OS” LRU缓存,因为它不会做内存管理本身。
只要您的工作组适合的LRU而无需将其首页输出或交换的OS不断,你应该从内存中在大多数时间阅读此查询。 所以,是的,MongoDB的可以缓存,但在技术上,没有关系。 操作系统一样。
其实这些查询的99是电脑电源的浪费。
缓存机制来解决这些类型的问题是在大多数科技股是否通过的MongoDB或SQL相同。 当然,这只是事情,如果它出了问题,你可能是微优化,如果你问我。 除非你的Facebook或谷歌或YouTube的流量类型。
缓存主题进入到从缓存查询范围在任何预聚合的MongoDB /内存缓存/ Redis的等,以缓存HTML和其他网络资源,使在服务器端尽可能少的工作尽可能一个巨大的课题。
你的情况下,亲自为我说的,听起来好像你在想错了浪费的计算机电源。 即使你是缓存在另一个集合/这高科技的查询可能会使用权力和资源从技术比,如果你只是没有打扰检索结果相同的金额。 但是这种假设归结到你有正确的索引,模式,建立等。
我建议你读好的架构设计和创建索引的一些链接:
- http://docs.mongodb.org/manual/core/indexes/
- https://docs.mongodb.com/manual/core/data-model-operations/#large-number-of-collections
制作喜欢的东西Nginx的静态,缓存的HTML不是首选,因为我想龙卷风每次呈现一个个性化页面。
是啊,我想通过努力担心查询缓存你过早地优化,特别是如果你不想起飞,这将是每次你服务器上的负载的90%; 加载页面本身。
我会专注于自己的模式和索引,然后担心缓存,如果你真的需要它。