速度快,存储在内存中,时间复杂度为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没有成熟的维护工具。
原文:https://www.cnblogs.com/robot-python/p/11775164.html