redis和mongodb以及memcache的优缺点

Redis优势:

  • 速度快,存储在内存中,时间复杂度为O(1)

  • 支持丰富的数据类型:(string,list,set,sorted set,hash)支持多种数据结构,如 string(字符串)、 list(双向链表)、dict(hash表)、set(集合)、zset(排序set)、hyperloglog(基数估算)。

  • 支持事务,操作都是原子性.所谓原子性就是对数据的更改要么全成功要么全失败

  • 丰富的特性可用于缓存,消息,按key设置过期时间,过期后会自动删除

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

  • 支持通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制

缺点:

  • redis只能使用单线程,性能受限于cpu性能,

  • 支持简单的事务需求,不成熟,不支持回滚

  • redis在string类型上会小号较多内存,可以使用dict压缩存储以降低内存好用

Memcached优势:

  • Memcached可以利用多核优势,单实例吞吐量极高,适用于最大程度扛量。

  • 支持直接配置为session handle。

  • Memecached把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小

缺点:

  • 数据类型比较单一

  • 无法实现持久化,数据不能备份,只能用于缓存使用且重启后数据丢失

  • 无法进行数据通过不,

  • 需要注重value的设计

MongDB优势:

  • MongoDB却是一个“存储数据”的系统,增删改查可以添加很多条件,就像SQL数据库一样灵活

  • 丰富的数据表达、索引;最类似于关系数据库,支持丰富的查询语言

  • 适合大数据量存储,依赖系统虚拟内存管理,采用镜像文件存储;内存占有率比较高

  • 支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制

  • 海量数据的访问效率提升<更高的写负载,MongoDB拥有更高的插入速度。

  • 模式自由 :可以把不同结构的文档存储在同一个数据库里

  • 面向集合的存储:适合存储 JSON风格文件的形式

  • 完整的索引支持:对任何属性可索引

  • 复制和高可用性:支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目的是提供冗余及自动故障转移

  • 自动分片:支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器

  • 丰富的查询:支持丰富的查询表达方式,查询指令使用JSON形式的标记,可轻易查询文档中的内嵌的对象及数组

  • 快速就地更新:查询优化器会分析查询表达式,并生成一个高效的查询计划

  • 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)

缺点:

  • 不支持事务。

  • MongoDB占用空间过大 。

  • MongoDB没有成熟的维护工具。

posted @ 2019-11-01 09:20  人工智能python/go  阅读(535)  评论(0编辑  收藏  举报