都是nosql数据库的著名代表
Redis和Memcache
- Redis和Memcache都是内存数据库。不过memcache还可用于缓存其它东西,如图片,视频等。
- Memcache数据结构单一,Redis更丰富些,还提供list,set,hash等数据结构的存储,有效的减少网络IO的次数。
- 虚拟内存-Redis当物理内存用完时,可以将一些很久没用到的value交换到磁盘。
- 存储数据安全,Memcache挂掉后,数据没了(没有持久化机制);Redis可以定期保存到磁盘(持久化)
- 灾难恢复-memcache挂掉后,数据不可恢复;Redis数据丢失后可以通过RBD或AOF恢复。
Redis和MongoDB
- Redis和Mong并不是竞争关系,更多的是一种协作共存关系。
- MongoDB本质上还是硬盘数据库,在复杂查询时仍然会有大量的资源消耗,而且在处理复杂逻辑时任然要不可避免地进行多次查询。
- 这时就需要Redis或Memcache这样的内存数据库来作为中间层进行缓存和加速。
- 比如在某些复杂页面的场景中,整个页面的内容如果都从MongoDB中查询,可能要几十个查询语句,耗时长。如果需求允许,则可以把整个页面的对象缓存至Redis中,定期更新,这样MongoDB和Redis就能很好的协作起来。