一级缓存,二级缓存,分布式缓存和页面缓存
来源:互联网 发布:java php base64 编辑:程序博客网 时间:2024/06/14 19:50
1、缓存介绍
当处理器读取数据时,首先会从缓存中查找,如果缓存有数据,那么处理器直接使用,如果缓存中中没有,则从读取速度相对慢的内存中读取,同时把这个数据块调入缓存中,以便再次使用,这样可以大大节省读取内存的时间。
在JAVA-EE中缓存对于数据量大,高并发显得特别重要
- 用户–后台 采用OSCache缓存
- 持久层一级缓存
- 持久层二级缓存
- 分布式缓存
1、一级缓存
当Hibernate根据ID访问数据对象的时候,首先会从Session一级缓存中查找,如果查不到并且配置了二级缓存,那么会从二级缓存中查找,如果还查不到,就会查询数据库,把结果按照ID放入到缓存中。
一级缓存作用于Dao层(数据库)
1、在Hiberante中也就是Session级别缓存,与Session绑定,生命周期与Session也相同。
Session session=factory.openSession(); Transaction ts = null; try { ts=session.beginTransaction(); //开始一个事务 ................... //执行事务 ts.commit(); //提交事务 } catch (HibernateException e) { //如果出现异常就撤销事务 if(ts!=null){ ts.rollback(); //回滚事务 } e.printStackTrace(); } finally{ session.close();//不管事务执行成功与否,最后都关闭Session并且放在finally中以提高安全性 }
优点:缓存在内存中,读取速度较快
缓存具体到某个事务,范围比较小
缺点:内存容量有限,通过合理的方式检索或者限制查询大小。
2、二级缓存
二级缓存是在SessionFactory中(也就是在数据库连接池中所有dao共享)
缓存介质:内存和硬盘,如果内存缓存达到上限时,可指定硬盘缓存,在Hibernate中就是CacheProvider(缓存适配器)
二级缓存适用场景:
- 很少被修改的数据
- 对并发要求不高
- 不重要的数据
public void run() { SessionFactory sf = CacheMain.getSessionFactory(); Session session = sf.getCurrentSession(); session.beginTransaction(); User user = (User)session.get( User.class, "1" ); System.out.println( user ); session.getTransaction().commit();} public static void main(String[] args) { CacheMain main1 = new CacheMain(); main1.start(); CacheMain main2 = new CacheMain(); main2.start(); }}
3、分布式缓存
分页式缓存CARP(Caching Array Routing Protocol)技术,可以产生一种高效无接缝式的缓存,使得让多台缓存服务器形同一台,并且不会造成数据重复存放的情况。
同时还有层次缓存,动态缓存和计划缓存三种。
5、OSCache
OSCache是一种页面缓存技术
缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。
缓存介质:内存和硬盘。
OSCache缓存域分application和session两种
application(对性能优化作用很明显)和某个 用户某次操作某个网站session(用户和web服务器会话)级共享两种。对共享的资源设置过期时间。即当服务器运行时发现在
作用域内还有对象,就以类似静态页面的形式(因为缓存了要显示的信息)提供给客户端,当过期了,就需要重查资源(如果是页面里的缓存就需要资源能在jsp 里提供)。如果没有过期,但内容改变了,可以通过flush的方式清除老资源以便加载新的资源。
参考博客
http://dododo1234321-163-com.iteye.com/blog/1828173
- 一级缓存,二级缓存,分布式缓存和页面缓存
- 一级缓存,二级缓存,分布式缓存和页面缓存
- 一级缓存和二级缓存
- 一级缓存和二级缓存
- 一级缓存和二级缓存和查询缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- Hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate缓存:一级缓存和二级缓存
- hibernate一级缓存,二级缓存和查询缓存
- hibernate缓存:一级缓存和二级缓存
- svo 代码编译笔记
- Codeforces 725E Too much money (暴力模拟)
- 浏览器本地缓存 localStorage sessionStorage
- windows下LIB和DLL的区别与使用
- Proactor 与 reactor的区别
- 一级缓存,二级缓存,分布式缓存和页面缓存
- 235. Lowest Common Ancestor of a Binary Search Tree--dfs
- 支付宝支付后回调通知中responseTxt=true isSign=False可能的问题
- poj 1568 Find the Winning Move 极大极小搜索+Alpha-Beta剪枝
- javascript预编译+例题分析
- 感悟自己,思考自己--参加RSG2016杭州大会有感
- 查找算法总结之静态查找算法
- HTTL的使用和理解
- PyQt4实时显示文本内容GUI