redis
优点:
1 . 读写性能优异
2.支持数据持久化,支持 AOF 和 RDB 两种持久化方式
3.支持主从复制,主机会自动将数据同步到从机,可以进行读写分离。
4.数据结构丰富:数据结构丰富:支持 string、hash、set、sortedset、list 等数据结构。
缺点:
1.Redis 不具备自动容错和恢复功能,主机从机的宕机都会导致前端部分读写请求失败,需要等待机器重启或者手动切换前端的 IP 才能恢复。
2.主机宕机,宕机前有部分数据未能及时同步到从机,切换 IP 后还会引入数据不一致的问题,降低了系统的可用性。
3.Redis的主从复制采用全量复制,复制过程中主机会fork出一个子进程对内存做一份快照,并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运营造成了不小的麻烦。
4.Redis 较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。
MongoDB
优点:
1.弱一致性(最终一致),更能保证用户的访问速度
2.文档结构的存储方式,能够更便捷的获取数
3.内置 GridFS,高效存储二进制大对象 (比如照片和视频)
4.支持复制集、主备、互为主备、自动分片等特性
5.动态查询
6.全索引支持,扩展到内部对象和内嵌数组
缺点:
1.不支持事务
2.MongoDB 占用空间过大
3.维护工具不够成熟
MySql
优点:
1.体积小、速度快、总体拥有成本低,开源;
2.支持多种操作系统;
3.是开源数据库,提供的接口支持多种语言连接操作
4.MySql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的MySql能很容易充分利用CPU;
5.MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证;
6.支持ODBC for Windows, 支持所有的ODBC 2.5函数和其他许多函数, 可以用Access连接MySql服务器, 使得应用被扩展;
7.支持大型的数据库, 可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,可以针对不同的应用进行相应的修改。
8.拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性;
9.MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。MySQL可用于Unix,Windows,以及OS/2等平台,因此它可以用在个人电脑或者是服务器上;
缺点:
1.不支持热备份;
2.MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变;
3.没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制;
4.MySQL的价格随平台和安装方式变化。Linux的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方案则必须付许可费。Unix或Linux 自行安装 免费 、Unix或Linux 第三方安装 收费;