使用Mongo的上限集合作为穷人的memcache是否可行,假设它大部分时间都会保存在内存中?
答案 0 :(得分:12)
您绝对可以使用上限集合来实现此目的。但了解基本限制很重要。
_id
列默认情况下未在Capped Collections上定义,您需要确保这些索引。因为#1& #4& #5,你肯定会失去一些核心的Memcache功能。
TTL-based capped collections有一张长期出色的JIRA票,这可能正是你想要的。
当然,整个辩论中的一个重要问题是“哪里有额外的RAM”。许多使用MongoDB作为主存储的人只需删除Memcache。如果你有一堆额外的RAM,为什么不用它来存储实际数据而不是那些数据的副本?
答案 1 :(得分:2)
是。这是MongoDB上限集合的完全可接受的用法。我假设你将有更多的读取而不是写入,所以请确保你也使用索引。
答案 2 :(得分:1)
正如盖茨副总裁所说,上限集合可用且易于管理。但是,如果您:
,也可以使用非上限集合MongoDB缓存(类Unix系统上的mmap)将提供“无限”的内存缓存,缓存频繁访问的值。 正如mongo FAQ页面上所述:
目标是使Mongo成为ORM / memcached / mysql堆栈的替代