您的位置:首页 > 数据库 > Memcache

Memcache、Redis和MongoDB的区别

2017-09-21 11:03 555 查看
一 拥有数据类型

RedisMongoDBMemcache
String 字符串。在 MongoDB 中,UTF-8 编码的字符串才是合法的。(一个value最大支持512MB)string 字符串。是redis最基本的类型,你可以理解成与Memcached一模一样的类型,一个key对应一个value。仅支持简单的key-value结构的数据记录(一个value最大只支持1MB)
Integer 整型数值。根据你所采用的服务器,可分为 32 位或 64 位。hash 哈希。hash是一个string类型的field和value的映射表,hash特别适合用于存储对象。
Boolean 布尔值。用于存储布尔值(真/假)。list 列表。Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
Double 双精度浮点值。用于存储浮点值。set(集合)。et是string类型的无序集合。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。are neat
Array 用于将数组或列表或多个值存储为一个键。zset(sorted set:有序集合)
Timestamp 时间戳。记录文档修改或添加的具体时间。are neat
Object 用于内嵌文档。NumberInt()
Null 用于创建空值。Boolean
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。ISODate(),new Date()
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。
二 性能对比

2.1 Memcached: 可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key、value的字节大小以及服务器硬件性能,日常环境中QPS高峰大约在4-6w左右)。适用于最大程度扛量。而在100k以上的数据中,Memcached性能要高于Redis.

2.2 Redis: 由于Redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高。

2.3 Mongodb: Mongodb小于两者性能, 前两者性能差不多。

三 内存空间和数据量大小

3.1 MemCached:可以修改最大内存,采用LRU算法。

3.2 Redis:增加了VM的特性,突破了物理内存的限制。

3.3 MongoDB: 适合大数据量的存储,依赖操作系统 VM 做内存管理,吃内存也比较厉害,服务不要和别的服务在一起。

四 操作便利

3.1 MemCached: 数据结构单一,仅用来缓存数据。

3.2 Redis: 支持更加丰富的数据类型,也可以在服务器端直接对数据进行丰富的操作,这样可以减少网络IO次数和数据体积。

3.3 Mongodb: 支持丰富的数据表达,索引,最类似关系型数据库,支持的查询语言非常丰富。

五 可靠性上

5.1 MemCached: 不支持数据持久化,断电或重启后数据消失,但其稳定性是有保证的。

5.2 Redis: 支持(快照、AOF),支持数据持久化和数据恢复,允许单点故障,但是同时也会付出性能的代价。

5.3 MongoDB: 从 1.8 版本开始采用 binlog 方式支持持久化的可靠性。

六 数据一致性(事务支持)

6.1 Memcache 在并发场景下,用cas保证一致性。

6.2 redis事务支持比较弱,只能保证事务中的每个操作连续执行。

6.3 mongoDB不支持事务。

七 数据分析

mongoDB:内置了数据分析的功能(mapreduce),其他不支持。

八 使用场景

8.1 Memcached:动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等)。

8.2 Redis:适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。

8.3 MongoDB:主要解决海量数据的访问效率问题。

参考文章:http://www.cnblogs.com/cac2020/p/6044536.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mongodb redis memcached