看到JE上好几个关于memcached做hibernate二级缓存帖子,不由得兴奋了一把。
作为集中式的缓存实现,的确可以解决JBossCache在大量update时的广播效率问题。
但是,目前我碰到的case,需要有大量的update,同时还期望(最好)能拥有一定的事务性(要求不高,read-commited级别就可以了,也就是Hibernate里面的read-write模式)。
目前不知道到底是hibernate-memcached好还是JBossCache好?
hibernate-memcached
好处:集中式,update后无需广播
坏处:不支持事务
JBossCache
好处:支持事务(但其实我的case不需要那么高隔离级别的事物)
坏处:update后通过广播在各节点之间同步
BTW,问几个很弱的问题
(1)memcached在更新的时候,是否会block其他的读操作;或者,如果有多个请求同时提交写请求,它会怎么办?
(2)JBossCache在集群环境下如何实现事务性支持?难道需要等到各个节点都完成同步之后才能最后提交?否则其他节点岂不是很容易读到脏数据?
请熟悉这个领域的大牛大力拍砖!!!
分享到:
相关推荐
在分布式环境下,二级缓存可以通过配置实现分布式缓存,如使用Redis、Memcached等。这种方式可以在多台服务器之间共享数据,提高系统的可扩展性和性能。同时,需要处理好分布式环境下的数据一致性问题,如采用事件...
**分布式缓存**:在多服务器环境下,通过集群共享二级缓存,进一步提高系统性能和可用性。缓存一致性是个挑战,需要通过分布式协调机制保证数据的一致性。 **实现方式**: - 使用支持分布式缓存的中间件,如Redis或...
Hibernate缓存机制通过一级缓存和二级缓存实现了对数据库访问的优化,降低了数据库负载,提升了系统响应速度。理解和合理使用缓存是优化Hibernate应用性能的关键,同时也需要注意缓存可能导致的数据一致性问题,以...
2. **Hibernate Provider**:如果使用Hibernate作为ORM框架,可以自定义Hibernate缓存提供者,将Memcached作为二级缓存。这样,Hibernate查询的结果会被缓存起来,提高数据库访问效率。 3. **Session复制**:利用...
Hibernate缓存是优化数据库操作的关键,它通过存储数据库数据的拷贝来减少对数据库的直接访问,从而提高应用性能。缓存分为一级缓存和二级缓存。 一级缓存是SessionFactory级别的缓存,也是默认开启的。每个Session...
- **Hibernate二级缓存**:SessionFactory级别,跨Session,可配置为进程内或集群间共享,缓存查询结果和集合数据。 3. **分布式系统中的缓存(Memcached、Xmemcached)** - **分布式缓存**:在分布式环境中,...
这通常涉及到配置Hibernate的二级缓存,将Coherence作为缓存提供商,以便在内存中存储和检索对象。 总的来说,Oracle Coherence通过其独特的分布式缓存技术,为企业级应用提供了高性能、高可用性的数据存储和访问...
然而,由于涉及多线程和分布式环境,二级缓存的实现通常需要第三方缓存产品,如EhCache、Redis或Memcached等。在Hibernate中,配置二级缓存需要在配置文件(如hibernate.cfg.xml)中指定缓存提供者,并添加对应的...
3. 更好的扩展性:在多核CPU环境下,memcached不会像MySQL的query cache那样遇到全局锁的问题。 缺点: 1. 需要额外工作量集成:与MySQL的query cache相比,将memcached引入应用需要更多开发工作。 2. 缓存失效:...
3. 在多核CPU环境下,MySQL的querycache会遇到扩展性问题,因为它引入了全局锁来管理缓存,而memcached则不存在这样的问题。 4. memcached允许存储任意数据,不仅仅局限于SQL查询结果,从而可以更灵活地设计缓存策略...
例如,Java的Spring框架中的Hibernate二級缓存和Redis等内存数据库就是常见的应用缓存解决方案。 接下来是分布式缓存,它是在多台服务器之间共享数据的一种机制,常用于处理海量数据和高并发场景。分布式缓存系统如...
Memcached是一款高性能的分布式内存对象缓存系统...与MySQL的Query Cache相比,Memcached具有更优的性能表现,尤其是在大规模分布式环境下。在决定使用哪一种缓存策略时,需要根据应用的具体需求和环境来做出合理选择。
分布式缓存是一种将数据存储在分布式环境中的高速缓存技术,通常用于减轻数据库的负载,提高数据读取速度。常见的分布式缓存系统有Redis、Memcached、Hazelcast等。 2. **为什么要使用分布式缓存?** 主要原因...
- Ehcache更适合Java环境,尤其适用于本地缓存和Hibernate二级缓存。 - Memcached适用于需要快速、简单键值存储的跨语言环境,适合缓存小型数据。 - Redis因其丰富的数据结构和持久化能力,常用于需要复杂数据操作和...
7. **Spring和Hibernate集成**:与Spring框架无缝集成,同时支持Hibernate-memcached,作为二级缓存解决方案,可替代Spymemcached。 8. **客户端连接池**:允许创建连接池以应对高并发场景,但需要注意数据独立性和...
- **集群环境下Session共享:** 解决集群环境下Session共享的问题。 - **Linux系统操作与缓存服务器部署:** 在Linux环境下进行系统操作和缓存服务器的部署工作。 #### 三、项目开发流程 - **开发环境搭建:** ...
使用Hibernate和Ecache进行数据持久化和缓存管理,但若追求更高性能,可以考虑使用EJB和WebSphere、WebLogic这样的企业级服务器,并配合Oracle等高性能数据库。 6. **静态化与URL重写**:对高流量内容进行静态化...
- 一级缓存是SqlSession级别的,二级缓存是Mapper级别的,可以跨SqlSession共享数据,提高效率。 - MyBatis的接口绑定允许将接口方法与SQL映射文件的SQL语句关联,有两种实现方式:基于注解和基于XML配置。 2. **...