缓存之Ehcache

本文介绍了Ehcache在Spring框架中的使用,包括@Cacheable等注解以及集群解决方案,如RMI组播、JMS消息和Cache Server模式。Ehcache适用于更新较少、并发要求不严格和一致性要求不高的场景。在实际应用中,Ehcache常作为集中式缓存的二级缓存,解决一致性问题的方法有定时轮询和主动通知。此外,还提及了Guava Cache适用于本地缓存的情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 与Spring 框架中集合Ehcache的方式主要有注入两个类
<bean  id ="ehcache" class="org.springframework.cache.ehcache.EhCacheManagerFactoryBean">
	<property name="configLocation" value="classpath:ehcache/ehcache.xml">
</bean>
<bean id="cacheManager" class="org.springframework.cache.ehcache.EhCacheCacheManager">
	<property name="cacheManager" ref="ehcache">	
</bean>
<cache:annotation-driven cache-manager="cacheManager" />

通过上面的配置之后可以使用注解:
@Cacheable @CachePut @CacheEvict @CacheConfig
和使用ironrhino的CheckCache,EvictCache一样,不过ironrhino是通过切面编程来实现缓存机制,CacheAspect.class

2.通过集群方案可以实现集群中的不同EhCache 实现缓存一致性问题;Ehcache使用的集群方案主要有 RMI组播方式、JMS消息方式、Cache Server模式
2.1 RMI组播方式
缓存改变是,Ehcache会向组播IP地址和端口号发送RMI UDP组播包;
2.2 JMS消息方式
JMS核心的就是一个消息队列,每个应用节点都订阅定义好的主题,当有缓存更新时,会主动发布更新到主题中去,Ehcache默认支持ActiveMQ,也可以通过自定义组件的方式实现类似Kafka 和RabbitMQ等。
2.3 Cache Server 模式

3.Ehcache 使用的场景
(1).比较少更新的场景下(Hibernate 在进行更新操作时,或删除缓存中对应的对象)
(2) 对并发要求不严格,因为不能实时同步
(3) 对一致性要求不高
在实际工作中,把Ehcache作为集中式缓存(Redis/Memcached)二级缓存使用,但是如何解决在集中式缓存和本地二级缓存一致性问题,主要有如下方案:
1.定时轮询 本地缓存定时轮询Redis缓存,比较缓存版本
2.主动通知 本地缓存订阅MQ消息,Redis缓存主动通知

4 另一个本地缓存 Guava Cache 主要适用于一下场景:

  • 愿意消耗一些本地内存来提升速度
  • 更新锁定:如果多个并发请求读取一个缓存中不存在的数据时,会锁定一个请求去读取数据,放在缓存中,其他的请求被阻塞。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值