`
mazzystar
  • 浏览: 27360 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

这样的数据该不该用2级缓存?

阅读更多
(一)Hibernate的二级缓存策略的一般过程如下:
1) 条件查询的时候,总是发出一条select * from table_name where …. (选择所有字段)这样的SQL语句查询数据库,一次获得所有的数据对象。
2) 把获得的所有数据对象根据ID放入到第二级缓存中。
3) 当Hibernate根据ID访问数据对象的时候,首先从Session一级缓存中查;查不到,如果配置了二级缓存,那么从二级缓存中查;查不到,再查询数据库,把结果按照ID放入到缓存。
4) 删除、更新、增加数据的时候,同时更新缓存。
  Hibernate的二级缓存策略,是针对于ID查询的缓存策略,对于条件查询则毫无作用。为此,Hibernate提供了针对条件查询的Query Cache。
(二)什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据
2 不是很重要的数据,允许出现偶尔并发的数据
3 不会被并发访问的数据
4 参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。
(三)不适合存放到第二级缓存的数据?
1 经常被修改的数据
2 财务数据,绝对不允许出现并发
3 与其他应用共享的数据。

原文摘自http://rujingzhang.iteye.com/blog/219487

我们项目中A表的情况是这样的 :
表A的数据只有当天添加的数据是有效的,如果没有当天的数据
那么选择“最近的”数据作为参考显示给用户,
用户可以在页面上点击某按钮获得当天数据,此时,系统访问XX服务器,得到数据并向A表插入一条数据,然后显示用户。
这是向A表insert数据唯一入口,并且A表的数据不会被update和delete

我现在想给A表中的数据缓存,并且DAO中的所有查询方法都控制为只查询3天之内的数据(查询3天之前的数据没有意义)

我的理解是这样的

(二)什么样的数据适合存放到第二级缓存中?
1 很少被修改的数据 会比较频繁的insert,但不会update,不知道算不算很少被修改
2 不是很重要的数据,允许出现偶尔并发的数据  没有 update 操作,所以不存在并发

3 不会被并发访问的数据 没有 update 操作,所以不存在并发

4 参考数据,指的是供应用参考的常量数据,它的实例数目有限,它的实例会被许多其他类的实例引用,实例极少或者从来不会被修改。 在整个应用中A表的数据使用较为频繁,每天都会有些数据失效,并且随时都会插入新数据

由于以前没有做过并发和缓存方面的工作,不知道A表的情况是否适合做2级缓存,做了缓存后会带来哪些问题,希望大家给点建议
希望投新手帖,隐藏帖的大哥们也能给点意见

分享到:
评论
1 楼 movingboy 2008-08-14  
既然插入了就不改,而且频繁用到,非常适合放到二级缓存中嘛!

相关推荐

    深入理解MyBatis中的一级缓存与二级缓存

    不同的SqlSession之间的缓存数据区域是互相不影响的,也就是说一级缓存只能作用在同一个SqlSession中,不同的SqlSession中的缓存是互相不能读取的。 一级缓存的工作原理是:用户发起查询请求,SqlSession先去缓存中...

    hibernate一级缓存和二级缓存的区别与联系

    Hibernate 是一个流行的对象关系映射(ORM)框架,它提供了数据缓存机制以优化数据库访问性能。缓存机制分为一级缓存和二级缓存,两者都有助于减少对物理数据库的直接访问,从而提高应用程序的运行效率。 一级缓存...

    hibernate一级缓存、二级缓存和查询缓存

    **hibernate一级缓存、二级缓存和查询缓存** 在Java的持久化框架Hibernate中,缓存机制是提高应用程序性能的关键要素。缓存能够减少数据库的访问次数,提高数据读取速度,并且在一定程度上降低了系统的负载。本文将...

    Redis用作二级缓存

    通过以上步骤和注意事项,我们可以将Redis有效地整合到Mybatis的二级缓存中,实现高效的数据缓存,提高系统的响应速度和用户体验。同时,结合业务需求和系统负载情况,不断调整优化缓存策略,以达到最佳的性能效果。

    MyBatis缓存(一级缓存、二级缓存)

    2. 如果数据不在二级缓存中,MyBatis会继续查询数据库并将结果存入一级缓存。 3. 当SqlSession提交事务时,一级缓存中的数据会被复制到二级缓存中。 4. 如果其他SqlSession执行相同的查询,会先查看二级缓存,找到则...

    springMybatis+redis三级缓存框架

    Redis是一款基于键值对的高性能NoSQL数据库,常用于做数据缓存。它支持丰富的数据结构(如字符串、哈希、列表、集合等),并且具备高速读写性能,能够提供更强大的缓存能力。 在"springMybatis+redis三级缓存框架...

    mybatis一级缓存和二级缓存简单示例

    二级缓存的生命周期更长,但在并发环境下需要谨慎使用,因为它可能会引发数据不一致的问题。 ### 开启缓存 1. **一级缓存**:一级缓存是默认开启的,无需额外设置。 2. **二级缓存**:在 MyBatis 的配置文件中,...

    Hibernate一级缓存和二级缓存

    Hibernate的一级缓存和二级缓存是提高数据访问效率的重要手段,它们各自承担着不同的角色,合理使用可以显著提升应用性能。然而,缓存的使用也需要谨慎,需要根据具体业务场景选择合适的缓存策略,并关注可能带来的...

    一级缓存和二级缓存

    L1缓存分为数据缓存(Data Cache)和指令缓存(Instruction Cache),分别用于存储计算过程中的数据和执行指令。由于L1缓存的接近性,它能够显著减少CPU等待数据的时间,提高处理器的执行效率。在多核CPU中,每个...

    Hibernate一级缓存、二级缓存以及查询缓存实例

    使用二级缓存需要注意的是,由于数据可能存在多个Session之间共享,因此需要处理并发问题,确保数据的一致性。此外,对于经常更新的数据,可能需要更频繁地刷新二级缓存,以防止读取到过期数据。 查询缓存是...

    hibernate的一级缓存和二级缓存

    启用一级缓存是默认的,只要通过Session执行数据操作,Hibernate就会自动使用一级缓存。而二级缓存则需要在配置文件中明确指定,可以针对单个类或集合粒度进行配置。对于读多写少的实体,启用二级缓存能显著提升性能...

    Hibernat一级缓存(源码)

    2. 使用 SoftReferences:可以配置 Hibernate 使用软引用(SoftReferences)来管理缓存中的对象,这样在内存不足时,Java 垃圾回收器会自动回收这些对象,平衡缓存和系统资源。 3. 分布式缓存:在多节点环境中,可以...

    hibernate一级和二级缓存配置与详解

    本篇将深入探讨Hibernate的一级缓存和二级缓存,以及查询缓存的配置和使用。 ### 一级缓存 一级缓存是Hibernate默认提供的缓存,它是Session级别的,每个Hibernate Session都有一个私有的、本地的一级缓存。当我们...

    安卓三级缓存

    L1缓存分为指令缓存(用于存储处理器即将执行的指令)和数据缓存(用于存储运算所需的数据)。由于L1缓存非常靠近处理器,因此访问速度极快,但其容量通常只有几十到几百KB。 L2缓存(二级缓存)相比于L1缓存更大,...

    hibernate二级缓存实例

    二级缓存虽然能提高性能,但也存在一定的风险,如缓存穿透(查询不存在的数据导致缓存为空)、缓存雪崩(大量缓存同一时间失效导致请求涌向数据库)等问题。因此,在实际应用中,应结合业务场景谨慎使用,并采取相应...

    day37 05-HIbernate二级缓存:一级缓存更新同步到二级缓存及二级缓存配置文件

    然而,一级缓存并不能解决所有问题,因为它的生命周期受限于事务,导致跨事务的数据共享困难。为了解决这个问题,Hibernate引入了二级缓存。二级缓存是进程级或者集群级的,它可以跨多个会话和事务共享数据,从而...

    hibernate 二级缓存

    2. 缓存失效:合理设置缓存过期时间或使用事件驱动的缓存清理机制,确保缓存中的数据与数据库保持同步。 3. 性能调优:根据系统负载和硬件资源,调整缓存大小和并发级别,避免内存溢出。 4. 安全性:不要缓存敏感...

    Hibernate一级缓存和二级缓存【内附二级缓存数据存储结构】

    在实际应用中,合理配置和使用缓存能够显著提高应用性能,但需要注意缓存的大小设置、过期策略以及与数据库的同步策略,以防止数据不一致性和内存溢出等问题。 总之,理解并熟练运用Hibernate的一级和二级缓存,...

    yii2数据缓存 学习笔记

    yii 学习笔记,其中包括数据缓存、缓存组件、缓存过期、缓存依赖的理解及yii2数据缓存的测试代码

    ASP.NET数据缓存技术

    在这个主题中,我们将深入探讨ASP.NET数据缓存的原理、使用方法以及优化策略。 1. 缓存的基本概念 缓存是一种存储技术,用于暂时存储经常访问的数据,以便快速获取。在ASP.NET中,数据缓存分为两种主要类型:页面...

Global site tag (gtag.js) - Google Analytics