19

我最近看到很多人使用 Redis 作为缓存,为什么不使用 Mongo?据我所知,Redis 可以在索引上设置过期日期,例如 memcache,但除此之外有什么理由不使用 Mongo 吗?

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

4

3 回答 3

14

很多人确实将 MongoDB 用于中低级缓存,而且效果很好。

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

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

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

于 2012-04-25T14:49:42.580 回答
11

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

于 2012-04-26T02:57:11.233 回答
3

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

于 2012-04-25T14:48:53.857 回答