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

时间:2012-04-25 14:24:42

标签: mongodb memcached redis geospatial

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

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

3 个答案:

答案 0 :(得分:14)

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

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

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

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

答案 1 :(得分:10)

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

答案 2 :(得分:3)

当我们说缓存时,速度会浮现在脑海中。这里的目标是尽可能快地设置和检索某些东西。从这个意义上说,redis比mongodb更快。但是,如果您发现mongodb适合对缓存数据进行地理空间搜索,则可以使用它。你当然可以投入一些时间并在redis中实现相同的功能,然后通过基准测试来看看你获得了什么。