Redis、Memcache和MongoDB的别

发布时间:2018-12-13  栏目:NoSQL  评论:0 Comments

https://www.cnblogs.com/tuyile006/p/6382062.html

>>Memcached

https://www.cnblogs.com/chinesern/p/5581422.html

Memcached的优点:

Memcached可以用基本上对优势,单实例吞吐量极高,可以直达几十万QPS(取决于key、value的字节大小及服务器硬件性能,日常环境遭到QPS高峰约在4-6w左右)。适用于极端可怜程度扛量。

支撑直接配备为session handle。

Memcached的局限性:

只有补助简的key/value数据结构,不像Redis可以帮助添加的数据类型。

没辙展开持久化,数据未可知备份,只好用于缓存使用,且又开后数总体丢掉。

不可以展开数量并,不克以MC中的多少迁移至外MC实例中。

Memcached内存分配拔取Slab
Allocation机制管理内存,value大小分布差距较丰富时相会促成内存利用率下降,并引发低利用率时仍现身踢来当题材。需要用户青睐value设计。

>>Redis

Redis的优点:

支撑多数据结构,如 string(字符串)、
list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数推断)

匡助持久化操作,可以开展aof及rdb数据持久化到磁盘,从而举行数据备份或数据恢复生机等操作,较好之预防数据丢失的手段。

帮助通过Replication举行多少复制,通过master-slave机制,可以实时举办数据的一块儿复制,帮助多元复制与增量复制,master-slave机制是Redis举办HA的要害手段。

单线程请求,所有命令串行执行,并作情况下未欲考虑数据一致性问题。

支撑pub/sub音信订阅机制,可以据此来拓展信息订阅与通。

补助简的业务需求,但业界使用境况很少,并无成熟。

Redis的局限性:

Redis只能采取单线程,性能受限于CPU性能,故单实例CPU最高才可能达到5-6wQPS每秒(取决于数据结构,数据大小与服务器硬件性能,平常环境遭遇QPS高峰大约于1-2w左右)。

支撑简的业务需求,但业界使用境况酷少,并无熟,既是亮点也是缺点。

Redis在string类型上会消耗相比多内存,可以选择dict(hash表)压缩存储以降内存耗用。

Mc和Redis都是Key-Value类型,不称在不同数据集之间确立关联,也非符合进行询问检索。比如redis的keys
pattern这种匹配操作,对redis的性是不幸。

>>mongoDB

mongoDB 是一样栽文档性的数据库。先解释一下文档的数据库,即好存放xml、json、bson类型系那多少个的数额。

那个数量有所自述性(self-describing),展现分层的树状数据结构。redis能够用hash存放简单关联项目数码。

mongoDB 存放json格式数据。

顺应场景:事件记录、内容管理或博客平台,比如评论系统。

1.mongodb持久化原理

mongodb与mysql不同,mysql的各样一样破改进操作都汇合一贯写副硬盘,可是mongo不会,做吧外存型数据库,数据操作会先勾勒副内存,然后再度会合持久化到硬盘中去,那么mongo是什么样持久化的为

mongodb在起步时,专门初始化一个线程不断循环(除非动用crash掉),用于在必然时间周期内来打defer队列中落要持久化的数码并勾画副到磁盘的journal(日志)和mongofile(数据)处,当然为她不是当用户增长记录时即描写及磁盘上,所以照mongodb开发者说,它不会师导致性能及之消耗,因为看罢代码发现,当举行CUD操作时,记录(Record类型)都叫放入到defer队列中为供延时批量(groupcommit)提交写入,但相信里面时间周期参数是独比方认真考量的参数,系统也90纳秒,假设该值更小的话,可能会晤促成数磁盘操作,过高而会造成系统宕机时数丢失过。

2.啊是NoSQL数据库?NoSQL和RDBMS有什么区别?在哪状态下利用以及无使NoSQL数据库?

NoSQL是勿关系项目数据库,NoSQL = Not Only SQL。

涉及项目数据库采纳的结构化的多少,NoSQL拔取的凡键值对的点子囤数据。

在拍卖不结构化/半结构化的很数据平日;在档次方向直达展开扩张时;随时应针对动态扩展的多少项时可以预先考虑动用NoSQL数据库。

当考虑数据库的成熟度;襄助;分析与商业智能;管理以及专业性等题材平日,应优先考虑关系项目数据库。

3.MySQL与MongoDB之间最为大旨的区分是啊?

关联项目数据库与非关系型数据库的别,即数据存储结构的两样。

4.MongoDB之特色是啊?

(1)面向文档(2)高性能(3)高可用(4)易扩大(5)充足的询问语言

5.MongoDB支撑存储过程为?假若扶助吧,怎么用?

MongoDB扶助存储过程,它是javascript写的,保存在db.system.js表中。

6.争精晓MongoDB中之GridFS机制,MongoDB为什么以GridFS来囤积文件?

GridFS是一律种植将大型文件存储在MongoDB中之公文规范。使用GridFS可以以分外文件分隔成多单小文档存放,这样咱们可以使得的保存好文档,而且解决了BSON对象来限定的问题。

7.为什么MongoDB的数据文件很老?

MongoDB选择的预分配空间的方来防护文件碎片。

8.当更新一个正在给搬的片(Chunk)上的文档时会发出啊?

履新操作会立刻发在初的丘(Chunk)上,然后转才会于所有权转移前复制到新的分片上。

9.MongoDB在A:{B,C}上立目录,查询A:{B,C}和A:{C,B}都汇合动索引吗?

莫会晤,只会当A:{B,C}上动索引。

10.即使一个分片(Shard)截止或深缓慢的早晚,发起一个查询会怎么着?

假设一个分片截至了,除非查询设置了“Partial”选项,否则查询会重返一个谬误。如果一个分片响应很缓慢,MongoDB会等待她的应。

>>Redis、Memcache和MongoDB的区别

从以下四只维度,对redis、memcache、mongoDB 举办了对待,

1、性能

还比强,性能对咱吧应该都非是瓶颈

整来讲,TPS方面redis和memcache差不多,要过mongodb

2、操作的便利性

memcache数据结构单一

redis丰裕一些,数据操作方面,redis更好有的,较少之网络IO次数

mongodb帮助添加的数码达,索引,最相近关系项目数据库,扶助之询问语言分外丰裕

3、内存空间的大大小小以及数据量的大大小小

redis在2.0本后多了投机之VM特性,突破物理内存的克;可以本着key
value设置过时(类似memcache)

memcache可以修改最充足可用内存,选择LRU算法

mongoDB适合生数据量的积存,依赖操作系统VM做内存管理,吃内存也相比较厉害,服务不要跟其余服务在并

4、可用性(单点问题)

于单点问题,

redis,倚重客户端来落实分布式读写;主从复制时,每一遍打节点重新连接主节点都如赖整个快照,无增量复制,因性与效能问题,

为此单点问题相比复杂;不援助电动sharding,需要依靠程序设定一致hash 机制。

同样栽替代方案是,不用redis本身的复制机制,选择自己开积极复制(多份储存),或者转化增量复制的艺术(需要协调实现),一致性问题同特性的衡量

Memcache本身没有数量冗余机制,也未曾必要;对于故障预防,采用依赖成熟的hash或者环状的算法,解决单点故障引起的颠簸问题。

mongoDB帮助master-slave,replicaset(内部用paxos选举算法,自动故障復苏),auto
sharding机制,对客户端屏蔽了故障转移和切分机制。

5、可靠性(持久化)

于数据持久化和数据苏醒,

redis协理(快照、AOF):依赖快照进行持久化,aof增强了可靠性的同时,对性能有影响

memcache不协助,常常用当召开缓存,提升性;

MongoDB从1.8版先河用binlog格局补助持久化的可靠性

6、数据一致性(事务襄助)

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

redis事务扶助于弱,只好保证工作中的每个操作连续实施

mongoDB不帮忙工作

7、数据解析

mongoDB内置了数据解析的功用(mapreduce),其他不援助

8、应用场景

redis:数据量较小的重新性能操作和运算上

memcache:用于在动态系统被刨数据库负载,提高性能;做缓存,提升性(适合读多写少,对于数据量比较坏,可以选用sharding)

MongoDB:重要解决海量数据的拜会效率问题

转载自:http://www.cnblogs.com/tuyile006/p/6382062.html

留下评论

网站地图xml地图