一.mysql特点

(1)mysql支持数据持久化存储

(2)功能很强大

(3)关系性数据库,数据存储在磁盘上,读写都涉及到文件IO的操作,磁盘的容量和带宽的大小影响数据的读取速度,

(4)mysql的连接池一般最大为500-1000,对于高并发支持度不够

(5)查询时间的复杂度,根据sql语句来决定效率,涉及到sql优化,索引创建

(6)mysql支持master-slave主从模式,支持集群间同步,适用于互联网项目数据读写分离

二.redis特点

(1)redis支持数据持久化,可以将内存中的数据保存在磁盘上,redis重启会把数据自动加载到缓存中,能够保护数据完整性

(2)redis不仅支持简单k/v类型的存储,还支持String,list,hash table,set,sorted set数据结构的存储

(3)内存数据库,数据存储在内存中,直接读取,速度很快,但是redis并不是所有的数据都保存在内存中,redis会缓存所有的key值,当物理内存用完,会见部分不经常使用的value值持久化到内存中

(4)查询速度很快,很好支持高并发,可达1百万/s

(5)redis支持master-slave主从模式,支持集群间的数据同步

(6)可以设置存储数据的失效时间

(7)查询数据的时间复杂度为O(1)

(8)redis的单个value的限制是1GB

(9)支持分布式锁

(10)redis是通过服务器端来构建分布式存储

(11)redis使用单核,单线程服务器

三.memcache特点

(1)不支持数据持久化,重启数据会丢失

(2)仅支持简单的k/v类型的存储,但是能够存储图片,视频等

(3)内存数据库,数据存储在缓存中,直接读取,速度很快,所有的数据都保存在内存中

(4)查询速度很快,很好支持高并发,可达1百万/s

(5)可以设置存储数据的失效时间

(6)自身不支持主从模式

(7)查询数据的时间复杂度为O(1)

(8)memcache的单个value的限制大小为1MB

(9)支持分布式锁

(10)memcache在实现分布式集群部署时,memcache服务器之间是没有通讯的,服务器端是伪分布式,实现分布式是通过客户端来实现的,在发送数据之前,客户端首先通过分布式算法计算出目标节点,然后把数据发送到该目标节点上进行存储。当客户端查询时,同样是先计算出目标节点,然后在发送请求获取数据

(11)支持多核,多线程服务器