`

数据缓存(一级缓存,二级缓存,第三方缓存)

阅读更多
java 代码
  1. 首先要知道为什么要缓存,我们的项目往往要数据库不会布署在同一个服务器上,那么如果我们的项目要频烦的操作数据库如果没有缓存,速度就会很慢,因为每访问都是一次远程调用,Socket的创建和销毁,数据的打包和拆包,数据查询命令,网络的延时,等等。   
  2.   
  3. 那下面说说缓存。缓存就是把数据库的数据在本地建一个备份放进内存。我们在次查找数据库的时候就先去本地内存中查找,这样相对起来,缓存的好处就一目了然了。   
  4.   
  5. 缓存分为三类   
  6.   
  7. 事务级缓存   
  8.   
  9. 相当于一个session.   
  10.   
  11. 应用级缓存   
  12.   
  13. sessionFactory,可由多个事务共享也就是由多个sesion共享。   
  14.   
  15. 分布级缓存   
  16.   
  17. 多个JVM之间共享   
  18.   
  19. 目前为止分布级缓存只有EJB做的最好了。Hibernate这一块并不好。   
  20.   
  21. Hibernate数据缓存   
  22.   
  23. Hibernate的数据缓存分为两个层次,   
  24.   
  25. 内部缓存(Session level,也叫一级缓存也叫是事务级缓存)   
  26.   
  27. 二级缓存(SessionFactory level)   
  28.   
  29. 内部缓存正常情况下由Hibernate自动维护如果需要手动干预。我们可以通过   
  30.   
  31. Session.evict;   
  32.   
  33. 将某个特定对象从内部缓存中清除   
  34.   
  35. Session.clear   
  36.   
  37. 清空内部缓存   
  38.   
  39. 这些都是在没有分布式缓存的情况下使用的。   
  40.   
  41. 数据库没有被其他应用程序共享。   
  42.   
  43. 项目没有部署到集群环境中。   
  44.   
  45. 第三方缓存的实现   
  46.   
  47. JCS是apache提供的但是在某些情况下可能导致内存泄漏以及死锁   
  48.   
  49. 常用的是ehcache,相比jcs,ehcache更加稳定并具备更好的缓存调度性能。但是对分布式缓存没有支持。   
  50.   
  51. 为什么引入第三缓存   
  52.   
  53. Hibernate本身并没有提供二级缓存的产品化实现,只是提供了一个基于hashtable的简单缓存经供调试,而提供了接口,让众多第三方缓存组件实现   
  54.   
  55. 文章引用自:    
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics