为什么使用Redis代替MongoDb进行缓存?

jfo*_*ain 18 memcached geospatial mongodb redis

我见过很多人最近使用Redis作为缓存,为什么不使用Mongo?据我所知,Redis可以在一个索引上设置一个过期日期,比如memcache但是否有任何理由不使用Mongo呢?

我问,因为我在MySQL中进行大量连接,然后在选择后更改数据.我已经在网站的其他部分使用了memcache,但是将其保存在Mongo中将允许我对缓存的数据进行地理空间搜索.

Tyl*_*ock 14

很多人确实使用MongoDB作为低中档缓存,它的工作效果非常好.

因为它通过即席可查询性提供比简单键值存储更多的功能,所以它不像memcache或redis那样纯粹是缓存层(插入和检索数据的速度可能较慢).

可以实现极高的性能(毕竟工作集在RAM中),但数据模型更重.

然而,另一方面,与Redis不同,MongoDB确实提供了一个持久层(对大多数开发人员来说)对于以后最有可能需要的数据类型更有意义.

  • 它现在已经实施:) (6认同)
  • 其他MongoDB功能,如[capped collections](http://www.mongodb.org/display/DOCS/Capped+Collections)也可以帮助缓存图层.还有[可配置TTL集合]的功能请求(https://jira.mongodb.org/browse/SERVER-211),这对缓存层非常有用,尽管它尚未实现. (5认同)

Jos*_*ell 10

MongoDB和Redis之间最大的区别是Redis通常将整个数据库存储在内存中.MongoDB使用内存映射文件来假装所有内容都在内存中,并根据需要让操作系统页面进出磁盘.如果操作系统可以将所有内容保存在内存中,性能将会有些类似.