• 一、什么是二级缓存:

  由于一级缓存是一次性的、临时的;每个会话都会创建一个新的;多个会话之间是不能共享的;

  二级缓存用于解决一级缓存的不足;每一个“namespace”都会对应一个二级缓存;执行查询的时候先在二级缓存中查找,如果没有再到一级缓存中查找,如果都没有就在DB中获取;会话关闭后才会同步到二级缓存,没有关闭的情况下是不会同步到二级缓存中的;

  • 二、二级缓存开启方式:

  在接口中添加@CacheNamespace注解即可,注意:这里有个坑,在接口文件中添加注解,与XML配置文件中添加属性是不一样的。这个问题只有在后期研究源码时再分析一下;

  • 三、@CacheNamespace注解说明:

  1)readWrite:读写模式,True:必须实现序列化接口;

  2)flushInterval:刷新时间,单位:毫秒;这里的刷新是指缓存数据的有效期;

  3)implementation:缓存实现自定义对象;

  4)eviction:缓存策略的算法;

  5)size:是引用的缓存结果,这里是指1024次查询的结果,是序列化之后的结果;

  6)blocking:防止缓存击穿,对应的实现类:BlockingCache.putObject;

  • 四、使用条件

  1)会话提交关闭之后才能填充二级缓存;

  2)必须在同一个命名空间下——namespace必须一致;

  3)必须是相同的statement,即同一个mapper中的同一个方法;

  4)必须是相同的SQL语句和参数;

  5)如果readWrite=true(@CacheNamespace(readWrite=true)),实体对象必须实现序列化(Serializable)接口;注意:True与False的区别在于性能,但是也可以忽略不计;

  • 五、清除二级缓存的条件

  1)XML中配置的Update不能清空@CacheNamespace中的缓存对象;

  2)只有修改会话提交后才会执行清空操作;

  3)任何一种增删改操作都会清空整个namespace中的缓存;

后续可能持续更新

最新文章

  1. VS2010 VS2012 VS2013 VS2015启动调试时老是提示正在下载公共符号
  2. 带你玩转JavaWeb开发之五-如何完成响应式开发页面
  3. “iTunes无法连接iPad,因为设备超时”解决办法
  4. Value must be an existing directory配置tomcat问题
  5. java 27 - 8 反射之 通过反射来设置某个对象的某个属性为指定值
  6. windows递归拷贝(或删除等操作)文件
  7. style在进行图形绘制前,要设置好绘图的样式
  8. 算法导论:Trie字典树
  9. [GCJ]Password Attacker
  10. maven小试牛刀
  11. 宿主进程 vshost.exe
  12. android EditText设置光标、边框和图标
  13. <runtime> 的 <assemblyIdentity> 元素和<bindingRedirect> 元素
  14. poj2871
  15. 储存过程嵌套临时表同名引发的BUG?
  16. php中json对象数据的输出转化
  17. Web服务cxf框架发布2
  18. 闲话ACES(修订)
  19. RabbitMQ消息的交换
  20. 代码d17

热门文章

  1. iOS画线段
  2. Python的题目
  3. 016:URL命名与反转URL
  4. chalk插件 使终端输出的字带颜色
  5. 访问SpringBoot中的Swagger的方法
  6. Spring Cloud架构教程 (三)服务网关(基础)
  7. C++二维数组(指针)做参数
  8. Oracle数据库锁表查询
  9. Jmeter -- 上下文关联(JSON提取器)
  10. Redis大key的发现与删除方法全解析