NoSQL的三个数据库Memcached和Redis以及MongoDB对比是怎样的

发布时间:2021-09-29 11:45:03 作者:柒染
来源:亿速云 阅读:136

这期内容当中小编将会给大家带来有关NoSQL的三个数据库Memcached和Redis以及MongoDB对比是怎样的,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

前言

NoSQL,泛指非关系型的数据库。随着互联网不断的发展,传统的关系数据库在应付新互联网模式的网站,特别是超大规模和高并发的SNS类型的纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。而今天主要讲用得比较多的三个NoSQL:Memcached、Redis、MongoDB。

Memcached

优点

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

  2. 支持直接配置为session handle。

缺点

  1. 只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型。

  2. 无法进行持久化,数据不能备份,只能用于缓存使用,且重启后数据全部丢失。

  3. 无法进行数据同步,不能将MC中的数据迁移到其他MC实例中。

  4. Memcached内存分配采用Slab  Allocation机制管理内存,value大小分布差异较大时会造成内存利用率降低,并引发低利用率时依然出现踢出等问题。需要用户注重value设计。

Redis

优点

  1. 支持多种数据结构,如 string(字符串)、  list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)。

  2. 支持持久化操作,可以进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段。

  3. 支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制,master-slave机制是Redis进行HA的重要手段。

  4. 单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题。

  5. 支持pub/sub消息订阅机制,可以用来进行消息订阅与通知。

  6. 支持简单的事务需求,但业界使用场景很少,并不成熟。

缺点

  1. Redis只能使用单线程,性能受限于CPU性能,故单实例CPU***才可能达到5-6wQPS每秒(取决于数据结构,数据大小以及服务器硬件性能,日常环境中QPS高峰大约在1-2w左右)。

  2. 支持简单的事务需求,但业界使用场景很少,并不成熟,既是优点也是缺点。

  3. Redis在string类型上会消耗较多内存,可以使用dict(hash表)压缩存储以降低内存耗用。

MongoDB

优点

  1. 更高的写负载,MongoDB拥有更高的插入速度。

  2. 处理很大的规模的单表,当数据表太大的时候可以很容易的分割表。

  3. 高可用性,设置M-S不仅方便而且很快,MongoDB还可以快速、安全及自动化的实现节点(数据中心)故障转移。

  4. 快速的查询,MongoDB支持二维空间索引,比如管道,因此可以快速及精确的从指定位置获取数据。MongoDB在启动后会将数据库中的数据以文件映射的方式加载到内存中。如果内存资源相当丰富的话,这将极大地提高数据库的查询速度。

  5. 非结构化数据的爆发增长,增加列在有些情况下可能锁定整个数据库,或者增加负载从而导致性能下降,由于MongoDB的弱数据结构模式,添加1个新字段不会对旧表格有任何影响,整个过程会非常快速。

缺点

  1. 不支持事务。

  2. MongoDB占用空间过大 。

  3. MongoDB没有成熟的维护工具。

Memcached、Redis、MongoDB的区别

1.性能

2.便利性

3.存储空间

4.可用性

5.可靠性

6.一致性

7.数据分析

8.应用场景

总结分析

  1. 若是简单的存取key-value(主要是读)这样的数据用Memcached好一些。若是要支持数据持久化,量也不大,操作很频繁,多数据类型(如集合、散列之类的),用列表类型做队列之类的高级应用,就用Redis,但如果是数据量比较大时就采用MongoDB。

  2. Memcached的很多客户端更加成熟稳定,Redis协议比Memcached复杂。Redis不可能比Memcached快?但是测试结果基本是Redis占绝对优势。

  3. 云数据库Memcached版实例中的数据是存储在内存中的,当出现宕机、机房断电等意外,或是云数据库Memcached版实例在正常升级维护时,内存中的数据均会丢失。因此,云数据库Memcached版不能作为持久化的数据存储服务使用。Redis的数据都存放在内存中,如果没有配置持久化,Redis重启后数据就全丢失了,于是需要开启Redis的持久化功能,将数据保存到磁盘上,当Redis重启后,可以从磁盘中恢复数据,实现持久化。

  4. 对于Redis和MongoDB来说,大家一般称之为Redis缓存、MongoDB数据库。Redis主要把数据存储在内存中,其“缓存”的性质远大于其“数据存储“的性质,其中数据的增删改查也只是像变量操作一样简单;MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活。

  5. MongoDB和Redis都是NoSQL,采用结构型数据存储。二者在使用场景中,存在一定的区别,这也主要由于二者在内存映射的处理过程,持久化的处理方法不同。MongoDB建议集群部署,更多的考虑到集群方案,Redis更偏重于进程顺序写入,虽然支持集群,也仅限于主-从模式

上述就是小编为大家分享的NoSQL的三个数据库Memcached和Redis以及MongoDB对比是怎样的了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. NoSQL -- php应用redis、mongodb
  2. Redis 和 memcached 区别

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

nosql memcached mongodb  

上一篇:如何创建MVC5 + EF6

下一篇:如何实现Laravel 5 动态设置缓存引擎

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》