一、问题
在分布式系统中,多个相同的服务如何共享缓存,并且是利用hibernate自身的二级缓存,通过annotation配置即可实现。本案例是hibernate4.x
二、解决方案
利用开源框架:hibernate-redis,下载地址https://github.com/debop/hibernate-redis
三、步骤
1、安装redis
http://wzalong.iteye.com/blog/2314655
注意:
redis需要设置密码
redis默认是本机可访问,需要在redis.conf中,找到#bind 127.0.0.1注释掉
2、引入Jar包
<dependency>
<groupId>com.github.debop</groupId>
<artifactId>hibernate-redis</artifactId
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.redisson</groupId>
<artifactId>redisson</artifactId>
<version>2.3.0</version>
</dependency>
<dependency>
<groupId>de.ruedigermoeller</groupId>
<artifactId>fst</artifactId>
<version>2.30</version>
</dependency>
3、配置
1)xml
<entry key="hibernate.cache.use_second_level_cache" value="${hibernate.cache.use_second_level_cache}"/>
<entry key="hibernate.cache.use_query_cache" value="${hibernate.cache.use_query_cache}"/>
<entry key="hibernate.cache.region.factory_class" value="${hibernate.cache.region.factory_class}"/>
<entry key="hibernate.cache.region_prefix" value="${hibernate.cache.region_prefix}"/>
<entry key="hibernate.cache.provider_configuration_file_resource_path" value="${hibernate.cache.provider_configuration_file_resource_path}" />
2)properties配置
hibernate.cache.use_second_level_cache=true
hibernate.cache.use_query_cache=true
hibernate.cache.region.factory_class=org.hibernate.cache.redis.hibernate4.SingletonRedisRegionFactory
hibernate.cache.region_prefix=hibernate
hibernate.cache.provider_configuration_file_resource_path=hibernate-redis.properties
3)增加hibernate-redis.properties 参考github
redisson-config=classpath:redis/redisson.yaml 这个前面加个classpath,不然会从项目所在硬盘根目录开始找。
4) 增加redisson.yaml 参考github 注意password: null 需要设置密码
connectionPoolSize subscriptionConnectionPoolSize 这几个测试阶段设置小点,不然会报错,因为redis没有设置太多的连接池
4、在entity上增加注释@org.hibernate.annotations.Cache(region="名字", usage = CacheConcurrencyStrategy.READ_WRITE)
分享到:
相关推荐
hibernate-redis-2.3.2.jar和redisson-2.5.1.jar是两个在Java开发中用于整合Hibernate ORM框架与Redis分布式缓存的库。它们为开发者提供了在Hibernate4.0及以上版本中利用Redis进行数据缓存的能力,以提升应用程序的...
1. `hibernate-redis-2.3.2.jar`:这是Hibernate Redis的实现库,它提供了与Hibernate集成的接口和实现,使得Hibernate能够与Redis进行通信,将二级缓存数据存入Redis。 2. `redisson-2.5.1.jar`:Redisson是一个...
本文将深入探讨Ehcache作为JVM缓存和分布式缓存的角色,以及Redis作为分布式缓存的解决方案,包括其分片集群、哨兵系统、数据结构、主从复制以及避免缓存问题的策略。 首先,我们了解为什么需要使用缓存。缓存的...
`Redis`是一种高性能的键值数据存储,常被用作分布式缓存。它可以极大地提升数据读取速度,减轻数据库压力,提高系统整体性能。 【Ehcache】 `Ehcache`是另一个缓存解决方案,它也可以用于缓存应用程序中的常用数据...
本示例"spring+springmvc+hibernate+redis实现session共享demo"旨在演示如何利用Spring、SpringMVC、Hibernate和Redis来实现高效的session共享机制。下面将详细阐述这个过程中涉及的关键技术和步骤。 1. **Spring...
Hibernate缓存机制通过一级缓存和二级缓存实现了对数据库访问的优化,降低了数据库负载,提升了系统响应速度。理解和合理使用缓存是优化Hibernate应用性能的关键,同时也需要注意缓存可能导致的数据一致性问题,以...
本篇将深入探讨Hibernate的缓存机制,包括一级缓存和二级缓存,并涉及二级缓存的高级应用——分布式缓存和查询缓存。 ### 1. Hibernate缓存概述 **缓存的作用**:减少对数据库的访问次数,从而提高应用性能。...
在分布式环境下,二级缓存可以通过配置实现分布式缓存,如使用Redis、Memcached等。这种方式可以在多台服务器之间共享数据,提高系统的可扩展性和性能。同时,需要处理好分布式环境下的数据一致性问题,如采用事件...
Java中常用的分布式缓存框架有Spring Cache、Ehcache、Hibernate Second Level Cache等,其中Spring Data Redis和Jedis提供了与Redis的集成。 4. **Redis和Memcached的区别** - Redis支持数据持久化,而Memcached...
可以通过RMI、可插入API等方式进行分布式缓存; 具有缓存和缓存管理器的侦听接口; 支持多缓存管理器实例,以及一个实例的多个缓存区域; 提供Hibernate的缓存实现; 4、对比Redis缓存 Ehcache:直接在Jvm虚拟机中...
JavaEE作为当前主流的企业级开发平台之一,其对分布式缓存的支持十分全面,为企业提供了丰富的选择。Oracle Coherence作为一款优秀的分布式缓存解决方案,在提高性能的同时还兼顾了易用性和灵活性,是值得推荐的选择...
Hibernate4提供了对JPA规范的实现,同时增加了许多高级特性,如缓存管理、复杂查询、事务处理等。使用JPA和Hibernate,开发者可以通过简单的对象操作来处理数据库交互,降低了对SQL的直接依赖。 **Redis** 是一个高...
### 分布式缓存架构——Spring Boot搭建Ehcache+Redis的二级缓存 #### 一、引言 随着互联网应用的不断普及和发展,对于数据处理能力的要求越来越高,特别是对于那些高并发、低延迟的应用场景而言,缓存技术成为了...
7. **事务管理**:由于Redis不支持分布式事务,因此在SSH应用中,需要根据业务需求处理事务与缓存的一致性问题。可以采用补偿事务或者最终一致性策略来解决。 8. **性能优化**:根据应用负载调整Redis的配置,如...
在集群环境中,二级缓存可能需要升级为分布式缓存,以实现在多个节点间的共享和同步。这通常通过分布式缓存服务如Redis或Memcached来实现,它们能保证在多台服务器之间保持数据的一致性。 总之,Hibernate的缓存...
例如,使用`@Cacheable`注解实现方法级缓存。 3. **分布式事务**:结合Spring Boot的事务管理,可以实现跨服务的分布式事务处理,保证数据一致性。 在`demo`这个项目中,可能包含了以下内容: - `pom.xml`:Maven...
- 支持通过 RMI 和插件API实现分布式缓存 - 提供缓存和缓存管理器的监听接口,便于监控和维护 - 支持多个缓存管理器实例及单个实例的多个缓存区域 - 集成了 Hibernate 的缓存实现 然而,Ehcache 在处理大规模缓存或...
主程序BaseManager.java不到1000行代码,用“精悍”来形容绝对不为过,1000行代码却包含了数据库对象的缓存、列表和长度的缓存、按字段散列缓存、update延时更新、自动清除列表缓存等功能,用它来实现像论坛、博客、...
总结来说,Java中的数据库缓存是通过各种工具和框架实现的,如Redis、Memcached、Hibernate二级缓存等。理解它们的工作原理、源码细节以及如何有效利用工具进行管理和监控,是提升系统性能、降低数据库压力的关键。...
除了这些库,还有一些其他的工具和框架,如Hibernate的第二级缓存,它可以缓存ORM查询的结果,减少对数据库的访问。Memcached是另一个流行的分布式缓存系统,虽然不支持复杂的键值结构,但在简单缓存场景下表现良好...