【问题标题】:Rails 3: How to implement a query cache in MongoDBRails 3:如何在 MongoDB 中实现查询缓存
【发布时间】:2012-05-23 11:14:04
【问题描述】:

我对 MongoDB 做了一些研究,发现它没有任何查询缓存。

MongoDB 不实现查询缓存:MongoDB 直接从索引和/或数据文件提供所有查询。 (http://docs.mongodb.org/manual/faq/fundamentals/)

有没有办法在 Rails 中为 MongoDB 实现查询缓存?我只想要与 MySQL 查询缓存相同的行为。同样的数据库查询第二次应该会更快。

谢谢!

【问题讨论】:

    标签: mysql ruby-on-rails-3 caching mongodb query-cache


    【解决方案1】:

    您可以使用 memcached 添加缓存层,但 MongoDB 可能仍会将上次读/写操作中的数据分页到内存中。将 MongoDB 服务器内存用于 memcached 将与其内存映射文件模型竞争。更少的 MongoDB 内存意味着更多的交换到磁盘。

    如果您正在运行 map reduce 作业(大到足以导致分页),可能值得缓存结果,但正确跟踪更新可能非常棘手。

    【讨论】:

    • +1 对于这个答案,这个问题令人困惑 mongoDB 是如何运作的。他应该阅读:mongodb.org/display/DOCS/Caching
    • 感谢约书亚的回答! @Adam:我确实阅读了这个关于缓存的简短文档。也许我没有正确理解它!?操作系统是否会自动将 MongoDB 的结果存储在内存中?如果是,我怎样才能再次检索这些数据?
    • MongoDB 使用内存映射文件,然后让操作系统管理数据进/出 RAM 的实际分页。除非你在其他地方有内存压力,导致数据被调出,否则当你访问它时,数据仍然在 RAM 中,所以只需要第一次访问磁盘。一旦以这种方式对其进行了预热,您就可以有效地将 MongoDB 视为内存中的缓存,当然,除非内存不足。
    猜你喜欢
    • 2020-01-23
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2019-04-15
    • 1970-01-01
    • 2017-08-11
    • 2014-09-06
    • 1970-01-01
    相关资源
    最近更新 更多