大家都知道,由于像MySQL这种数据库在应对当前这种应对大量数据集中访问的情况总是力有未逮,像网购秒杀、热点服务等,现在公司常常使用缓存数据库来代替MySQL来存储这类数据。比如说Echache、Redis、Memchache是吧。下面就说一说各自的特点和区别。

1、Redis

        它是在memchache之后出现的,大家经常把这两个拿来作比较。常说Redis最大的特性就是key value store,但还支持丰富的数据类型。

        (1)可持久化:redis本地持久化有两种方式,RDB和AOF。

                RDB就是在指定的时间间隔后将内存中的数据集快照写入磁盘,实际过程就是fork一个子进程,先将数据集写入临时文件,写入成功后,再替换原有文件,用二进制压缩存储。

                AOF是以日志的形式记录服务器所处理的每一个写、删操作,以文本的形式记录,而查询操作不记录。

                简单来说,就是数据集比较大,或操作比较密集、等待手动save,或追求高性能就采用RDB;而如果比较追求缓存一致性,可以用AOF,即使突然宕机也很难丢失数据。

        (2)丰富的数据类型

                支持String、set、sorted set、List 、hash等。像新浪微博采用Redis作为nosql(非关系型数据库)就是这个原因,时间排序、职能排序、我的微博等这些功能需要sorted set、list等结构的数据,redis 支持就比较好。

        (3)高性能

                内存操作的基本是毫秒级,比起硬盘的秒级自然高效不少。也是nosql产生的重要原因。

        (4)支持主从复制

                主从之间的复制非常快,支持一主多从,动态添加从库,从库数量没有限制。

2、Ehcache

        Java项目广泛应用,特点很简单:开源、够快、够简单、够袖珍、够轻量、好扩展、监听器。

        ehcache包很小,接口也简单,搭建很快,核心程序仅仅依赖于slf4这一个包。很简单就是ehcache最大的特色。

3、应用场景

Echache是在JVM中缓存,速度快、效率高,但是缓存共享麻烦,集群分布式不方便,适合于单个应用或缓存要求很高的项目

Redis是通过Redis访问到缓存服务,效率比Ehcache低,但是集群和分布式缓存技术非常方便。适用于大型项目,存在缓存共享、分布式部署的项目

如果要比较redis 和 memcache,主要从两点出发,一点是redis可以做存储,而memcache只能做缓存,因为redis 支持持久化;另外是redis支持多种数据类型,而memcache里存储的是一张hash表,value支持一些简单的数据类型。