将Mongo的上限集合用于内存缓存是否切合实际?

And*_*ewz 8 mongodb

使用Mongo的上限集合作为穷人的memcache是​​否可行,假设它大部分时间都会保存在内存中?

Gat*_* VP 12

您可以使用上限集合来实现此目的.但了解基本限制很重要.

  1. 数据将根据插入顺序到期而不是到期
  2. 经常访问的数据可能仍会被推出内存
  3. _id 默认情况下,未在Capped Collections上定义列,您需要确保这些索引.
  4. 无法以更改对象大小的方式修改对象.例如,您可以递增现有的整数,但不能在条目上添加字段或修改字符串值.
  5. 上限集合无法分片.

由于#1,你肯定会失去一些核心Memcache功能.

对于基于TTL的上限系列,有一个长期出色的JIRA票证可能正是您想要的.

当然,整个辩论中的一个重要问题是"额外的RAM在哪里".许多使用MongoDB作为主存储的人只需删除Memcache.如果你有一堆额外的RAM,为什么不用它来存储实际数据而不是那些数据的副本?