1.memcache: 1M
1>优点:利用多核心优势,单实例吞吐量可达到几十万qps(日常4-6万) 适用于最大程度抗量 可直接配置session handle
2>缺点:只支持简单的key/value结构,不支持其它的类型,无法持久化,数据不能备份,重启后数据丢失,无法进行数据同步和迁移。
2.redis
1>优点:支持多种数据结构,如string list hash表 set zset 等 支持持久化 可以进行数据复制和主从同步,单线程串行 并发不需要考虑一致性问题
2>缺点:只能单线程,性能受限于CPU,单例最高5-6万qps(日常1-2万) string类型上消耗较多的内存 可以使用hash表压缩存储降低内存耗用
3.mongodb
1>优点:文档型数据库,可以存放xml/json/bson类型数据 支持大容量存储 内置sharding,分片简单 支持丰富的表达、索引,最类似关系型数据库
2>缺点:占用空间过大,没有成熟的维护工具,不能进行关联查询,不适用于关系多的数据
4.应用场景
1>redis:数据量较小的性能操作和运算上
2>memcache: 用于在动态系统中减少数据库负载,提升性能,主要做缓存,提高性能
3>mongodb: 主要解决海量数据的访问效率问题
5.关于事务(一致性)
1>memecache在并发场景下,用cas保证一致性
2>redis事务支持比较弱,只能保证事务中的每个操作连续执行,也是redis的缺点
3>mongoDB不支持事务
4>memcache的cas指的是在使用gets获取内容时会返回一个标识,在进行cas时,会进行检测标识是否相符,相符则进行修改,并更改标识值,否则返回失败
转载于:https://my.oschina.net/ives/blog/3037240