【问题标题】:Why Use Redis instead of MongoDb for Caching? [closed]为什么使用 Redis 而不是 MongoDb 进行缓存? [关闭]
【发布时间】:2012-05-06 06:14:01
【问题描述】:

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

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

【问题讨论】:

    标签: mongodb memcached redis geospatial


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

      【解决方案3】:

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

      【讨论】:

      • Redis 保留两份副本,一份在内存,一份在磁盘
      • 从 3.2 版本开始,WiredTiger 是 MongoDB 的默认存储引擎。
      猜你喜欢
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 2015-06-03
      • 2015-04-26
      • 2011-07-08
      • 2020-01-27
      • 2011-09-20
      • 1970-01-01
      相关资源
      最近更新 更多