MemCache、MongoDB、Redis的对比

1. 优缺点:
    1. MemCache: 
        1>优点:利用多核心优势,单实例吞吐量可达到几十万qps(日常4-6万) 适用于最大程度抗量 
        2>缺点:只支持简单的key/value结构,不支持其它的类型,无法持久化,数据不能备份,重启后数据丢失,无法进行数据同步和迁移。
    2. MongoDB
        1>优点:文档型数据库,可以存放xml/json/bson类型数据  支持大容量存储 内置sharding,分片简单 支持丰富的表达、索引,最类似关系型数据库
        2>缺点:占用空间过大,没有成熟的维护工具,不能进行关联查询,不适用于关系多的数据
    3. Redis
        1>优点:支持多种数据结构,如string list hash表 set zset 等   支持持久化 可以进行数据复制和主从同步,单线程串行 并发不需要考虑一致性问题
        2>缺点:只能单线程,性能受限于CPU,单例最高5-6万qps(日常1-2万) string类型上消耗较多的内存 可以使用hash表压缩存储降低内存耗用
2. 应用场景
    1>MemCache: 用于在动态系统中减少数据库负载,提升性能,主要做缓存,提高性能
        数据库前端缓存
    2>MongoDB: 主要解决海量数据的访问效率问题
        案例1
        用在应用服务器的日志记录,查找起来比文本灵活,导出也很方便。
        用在一些第三方信息的获取或者抓取,因为MongoDB的schema-less,所有格式灵活,不用为了各种格式不一样的信息专门设计统一的格式,极大得减少开发的工作。
        案例2
        MongoDB之前有用过,主要用来存储一些监控数据,No schema 对开发人员来说,真的很方便,增加字段不用改表结构,而且学习成本极低。
        案例3
        使用MongoDB做了O2O快递应用,·将送快递骑手、快递商家的信息(包含位置信息)存储在 MongoDB,然后通过 MongoDB 的地理位置查询,这样很方便的实现了查找附近的商家、骑手等功能,使得快递骑手能就近接单,目前在使用MongoDB 上没遇到啥大的问题,官网的文档比较详细,很给力。
    3>Redis:数据量较小的性能操作和运算上,缓存高频次数据,降低数据库io
        1、排行榜
        很多网站都有排行榜应用的,如京东的月度销量榜单、商品按时间的上新排行榜等。Redis提供的有序集合数据类构能实现各种复杂的排行榜应用。
        2、计数器
        什么是计数器,如电商网站商品的浏览量、视频网站视频的播放数等。为了保证数据实时效,每次浏览都得给+1,并发量高时如果每次都请求数据库操作无疑是种挑战和压力。Redis提供的incr命令来实现计数器功能,内存操作,性能非常好,非常适用于这些计数场景。
        3、分布式会话
        集群模式下,在应用不多的情况下一般使用容器自带的session复制功能就能满足,当应用增多相对复杂的系统中,一般都会搭建以Redis等内存数据库为中心的session服务,session不再由容器管理,而是由session服务及内存数据库管理。
3. 关于事务(一致性)
    1>MemCache,用CAS保证一致性。(MemCache的CAS指的是在使用get获取内容时会返回一个标识,在进行CAS时,会进行检测标识是否相符,相符则进行修改,并更改标识值,否则返回失败)
    2>MongoDB不支持事务。
    3>Redis事务支持比较弱,只能保证事务中的每个操作连续执行,也是Redis的缺点。
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值