Memcache、Redis和MongoDB的区别
2017-09-21 11:03
555 查看
一 拥有数据类型
二 性能对比
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
Redis | MongoDB | Memcache |
---|---|---|
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
相关文章推荐
- Redis,Memcache,mongoDB的区别
- Redis,Memcache,mongoDB的区别
- Redis、Memcache和MongoDB的区别
- 转载 -- Redis,Memcache,mongoDB的区别
- Redis、Memcache和MongoDB的区别
- Redis,Memcache,mongoDB的区别
- Redis,Memcache,Mongodb的区别
- Redis、Memcache和MongoDB的区别
- Redis、Memcache和MongoDB的区别
- Redis、Memcache和MongoDB的区别
- memcache、redis、mongoDB的区别
- Redis、Memcache和MongoDB之间有什么区别呢?
- NoSQL | Redis、Memcache、MongoDB特点、区别以及应用场景
- Redis、Memcache和MongoDB的区别
- Redis、Memcache和MongoDB的区别
- Redis,Memcache,mongoDB的区别
- Redis、Memcache和MongoDB的区别
- Redis,Memcache,mongoDB的区别
- Redis、Memcache和MongoDB的区别
- Redis,Memcache,mongoDB的区别