最近我看到很多人将Redis用作缓存,为什么不用Mongo呢?就我所知,Redis可以在索引上设置过期日期(类似于memcache),但除此之外,还有其他任何不使用Mongo的理由吗?
我这样问是因为我正在MySQL中进行大型联接,然后在选择后更改数据。 我已经在站点的其他部分中使用了memcache,但在Mongo中保存此数据可以让我对缓存数据进行地理空间搜索。
最近我看到很多人将Redis用作缓存,为什么不用Mongo呢?就我所知,Redis可以在索引上设置过期日期(类似于memcache),但除此之外,还有其他任何不使用Mongo的理由吗?
我这样问是因为我正在MySQL中进行大型联接,然后在选择后更改数据。 我已经在站点的其他部分中使用了memcache,但在Mongo中保存此数据可以让我对缓存数据进行地理空间搜索。
许多人确实使用MongoDB作为低中等级缓存,它的效果非常好。
因为它通过特定查询提供了比简单键值存储更多的功能,所以它不像memcache或redis一样是一个纯粹的缓存层(它可能会更慢地插入和检索数据)。
可实现极高的性能(工作集毕竟在RAM中),但数据模型较重。
然而,MongoDB确实提供了一个持久化层,对于最有可能在以后需要的类型的数据来说,这个层对大多数开发者来说更有意义,与Redis不同。
MongoDB和Redis最大的区别在于Redis通常将整个数据库存储在内存中。MongoDB使用内存映射文件来模拟所有内容都在内存中,并允许操作系统根据需要将位从磁盘中分页进出内存。如果操作系统可以将所有内容保存在内存中,则性能会相对类似。
当我们说到缓存时,往往会想到速度。这里的目标是尽可能快地设置和检索某些内容。从这个意义上讲,Redis比MongoDB更快。然而,如果您发现MongoDB适合在缓存数据上进行地理空间搜索,那么使用它也可以。当然,您可以花费一些时间在Redis中实现相同的功能,然后进行基准测试,看看您能获得什么收益。