技术集锦

1.hibernate缓存、二级缓存是怎么实现的,除了oscache还引用了哪些缓存,缓存的原理是怎样的,如果自己去模拟二级缓存该怎么写,假如数据被不停地修改或更新,那怎样保证缓存中的数据是最新的?

  

(1)一级缓存就是Session级别的缓存,一个Session做了一个查询操作,它会把这个操作的结果放在一级缓存中,如果短时间内这个

session(一定要同一个session)又做了同一个操作,那么hibernate直接从一级缓存中拿,而不会再去连数据库,取数据;

(2)二级缓存就是SessionFactory级别的缓存,顾名思义,就是查询的时候会把查询结果缓存到二级缓存中,如果同一个sessionFactory

创建的某个session执行了相同的操作,hibernate就会从二级缓存中拿结果,而不会再去连接数据库;

(3)Hibernate中提供了两级Cache,第一级别的缓存是Session级别的缓存,它是属于事务范围的缓存。这一级别的缓存由hibernate管理

的,一般情况下无需进行干预;第二级别的缓存是SessionFactory级别的缓存,它是属于进程范围或群集范围的缓存。这一级别的缓

存可以进行配置和更改,并且可以动态加载和卸载。 Hibernate还为查询结果提供了一个查询缓存,它依赖于第二级缓存;

OScache特点:

缓存任何对象,你可以不受限制的缓存部分jsp页面或HTTP请求,任何java对象都可以缓存。
拥有全面的API--OSCache API给你全面的程序来控制所有的OSCache特性。
永久缓存--缓存能随意的写入硬盘,因此允许昂贵的创建(expensive-to-create)数据来保持缓存,甚至能让应用重启。
支持集群--集群缓存数据能被单个的进行参数配置,不需要修改代码。
缓存记录的过期--你可以有最大限度的控制缓存对象的过期,包括可插入式的刷新策略(如果默认性能不需要时)
 

所谓缓存,就是将程序或系统经常要调用的对象存在内存中,以便其使用时可以快速调用,不必再去创建新的重复的实例。这样做可以减少系统开销,提高系统效率。

缓存主要可分为二大类: 

一、通过文件缓存,顾名思义文件缓存是指把数据存储在磁盘上,不管你是以XML格式,序列化文件DAT格式还是其它文件格式;  

二、内存缓存,也就是实现一个类中静态Map,对这个Map进行常规的增删查. 

 

使用缓存的原则就是:尽量用低开销的计算代替高开销的计算。比如直接从其他数据库 查询的开销要远高于内存中的计算返回,网络请求要远高于本地(同一vm中)请求。

 memcache:分布式应用 内存对象缓存系统开发,占用其他机子的内存。很多互联网 ,负载均衡三台(以三台为例)其他web服务器 可以共享一台memcache的资源。传递的信息以键值对的形式存储。传递的数据要实现序列化。

oscache:页面级缓存(网上强调最多的东西),占用本机的内存资源。可 以选择缓存到硬盘,如存取到硬盘重启服务也可重新获得上次持久化的资源,而如果缓存到内存就不行。一般没必要缓存到硬盘,因为i/o操作也是比较耗资源,和从其他数据库 取往往优势很小。oscache存取数据的作用域分为application和session两种。

 ehcache:hibernate 缓存,dao缓存,安全性凭证缓存(acegi),web缓存,应用开发持久化和分布式应用 缓存。

如何保证缓存和数据库数据一致性:http://www.36dsj.com/archives/43950

RPC原理分析:http://blog.csdn.net/mindfloating/article/details/39474123

     

posted @ 2016-04-10 20:11  成风魄郎  阅读(192)  评论(0编辑  收藏  举报