Ehcache 和 Redis 比较

本文介绍了Ehcache和Redis两种缓存技术,包括它们的基本介绍、特点以及对比。Ehcache是一个Java分布式缓存,支持内存和磁盘存储,而Redis是基于内存的Key-Value数据库,提供多种数据结构且支持持久化。Redis的速度更快,支持更多数据类型,具有丰富的功能,但Ehcache在某些场景下更适合于Java应用和分布式环境。

 1.Ehcache介绍

EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。

        Spring 提供了对缓存功能的抽象:即允许绑定不同的缓存解决方案(如Ehcache),但本身不直接提供缓存功能的实现。它支持注解方式使用缓存,非常方便。

     Ehcache的特点:

  • 快速
  • 简单
  • 多种缓存策略
  • 缓存数据有两级:内存和磁盘,因此无需担心容量问题
  • 缓存数据会在虚拟机重启的过程中写入磁盘
  • 可以通过RMI、可插入API等方式进行分布式缓存
  • 具有缓存和缓存管理器的侦听接口
  • 支持多缓存管理器实例,以及一个实例的多个缓存区域
  • 提供Hibernate的缓存实现

2.Redis介绍

Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。

        Redis是一个key-value存储系统。它支持存储的value类型很多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。Redis将数据都是缓存在内存中。Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

        Redis的特点:

        1、速度快 

        Redis是用C语言实现的; Redis的所有数据存储在内存中。 

        2、持久化 
        Redis的所有数据存储在内存中,对数据的更新将异步地保存到磁盘上。 

        3、支持多种数据结构 

         Redis支持五种数据结构:String、List、Set、Hash、Zset 

        4、支持多种编程语言 
        Java、php、Python、Ruby、Lua、Node.js 

        5、功能丰富 
        除了支持五种数据结构之外,还支持事务、流水线、发布/订阅、消息队列等功能。 

        6、源码简单 
        约23000行C语言源代码。 

        7、主从复制 
        主服务器(master)执行添加、修改、删除,从服务器执行查询。 

        8、高可用及分布式 
        Redis-Sentinel(v2.8)支持高可用 。Redis-Cluster(v3.0)支持分布式
 

 3. Ehcache 和 Redis 比较

 EhcacheRedis
存取速度Ehcache直接在jvm虚拟机中缓存,速度快,效率高Redis是通过socket访问到缓存服务,效率比ecache低
集群和分布式Ehcache有缓存共享方案,不过是通过RMI或者Jgroup多播方式进行广播缓存通知更新,缓存共享复杂,维护不方便;简单的共享可以,但是涉及到缓存恢复,大数据缓存,则不合适。Redis有成熟的分布式解决方案。适合大规模分布式集群部署。
操作复杂度Ehcache提供的接口非常简单明了,从Ehcache的搭建到运用运行仅仅需要的是你宝贵的几分钟。其实很多开发者都不知道自己用在用Ehcache,Ehcache被广泛的运用于其他的开源项目。比如:Hibernate至少需要安装服务端和客户端才能使用。操作略比Ehcache复杂一些。

 4.memcache与redis的区别和联系

redis:支持比较多的数据类型(String/list/set/sortset/hash),redis支持集合计算的(set类型支持),每个key最大数据存储量为1G,redis是新兴的内存缓存技术,对各方面支持不完善,支持持久化操作。

memcache:老牌的内存缓存技术,对相关领域支持比较丰富,window和linux都可以使用,各种框架(tp/yii等等)都支持使用,session的信息可以非常方便的保存到该memcache中,每个key保存的数据量最大为1M,支持的数据类型比较单一,就是String类型,不支持持久化。

memcached挂掉后,数据不可恢复;redis数据丢失后可以通过aof恢复,Redis支持数据的备份,即master-slave主从模式的数据备份。

两者的相同之处在于把数据保存在内存中。

详细的差别比较:https://blog.csdn.net/u011489043/article/details/78922390

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ligengdipan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值