当前位置: 首页 > news >正文

手机网站制作招聘廊坊关键词排名

手机网站制作招聘,廊坊关键词排名,云电脑永久免费版手机版,企业文化经典句子文章目录 前言1. 多级缓存的概念1.1 CPU 多级缓存1.2 MyBatis 多级缓存 2. MyBatis 本地缓存3. MyBatis 全局缓存3.1 MyBatis 全局缓存过期算法3.2 CacheAside 模式 后记MyBatis 提供了缓存切口#xff0c; 采用 Redis 会引入什么问题#xff1f;万一遇到需强一致场景#x… 文章目录 前言1. 多级缓存的概念1.1 CPU 多级缓存1.2 MyBatis 多级缓存 2. MyBatis 本地缓存3. MyBatis 全局缓存3.1 MyBatis 全局缓存过期算法3.2 CacheAside 模式 后记MyBatis 提供了缓存切口 采用 Redis 会引入什么问题万一遇到需强一致场景如何增强 前言 MyBatis 官方文档 中文版本没有翻译cache的部分网上资料比较杂。 这里使用 Spock 测试框架验证下多级缓存并探索 Mybatis 的 CacheAside 模式。注意 本文用 本地缓存 表示一级缓存全局缓存 表示二级缓存用例仓库 1. 多级缓存的概念 多级缓存可以联系CPU的结构离核心约近的一致性越高。 1.1 CPU 多级缓存 1.2 MyBatis 多级缓存 本地缓存默认开启全局缓存需要使用 cache/ 开启 By default, just local session caching is enabled that is used solely to cache data for the duration of a session. To enable a global second level of caching you simply need to add one line to your SQL Mapping file: mapper namespacecom.james.mapper.FileCacheMappercache/ !-- 声明该标签,全局缓存开启 --select idselect resultTypejava.lang.StringSELECT file_name FROM file/select /mapper2. MyBatis 本地缓存 用 Spring 注入的 mapper调用一次select方法就会产生一个 sqlSession没有利用到本地缓存。 def 未使用事务第二次查询不命中本地缓存() {given:def list1 mapper.select()def list2 mapper.select()expect:list1 ! list2}用事务包裹后两次 select 共用一个 sqlSession缓存命中 def 使用事务命中缓存() {given:def list1 []def list2 []when:transaction.execute {list1 mapper.select()list2 mapper.select()}then:// 同一个事务使用同一个SqlSession若引用相同则认为命中缓存list1 list2}note: groovy 中 list1 list2 表示引用相同list1 list2 表示两个列表的内容相同 3. MyBatis 全局缓存 上文说到没有事务保护的 select方法调用无法公用一个 sqlSession所以利用不了本地缓存。 全局缓存的范围更大只要是同一个mapper的调用都会被缓存。 def 全局缓存默认关闭需要在xml文件中使用 cache/ 标签启用() {given:def list1 fileCacheMapper.select()def list2 fileCacheMapper.select()expect:// 由于 SerializedCache.java:64 使用的是由byte[]序列化方式存储元素所以实例的地址必然不同list1 ! list2list1 list2}3.1 MyBatis 全局缓存过期算法 值得关注的是 SOFT 和 WEAK 的类型对应Java中软引用和弱引用。 软引用是在内存不足时GC可以回收弱引用是下次GC即可回收比软引用积极。 3.2 CacheAside 模式 以下是 Mybatis 默认的全局缓存失效模式也就是 Cache Aside 模式的应用。 查询的时候如果没有缓存则写入。任何数据操作使缓存失效。 select ... flushCachefalse useCachetrue/ insert ... flushCachetrue/ update ... flushCachetrue/ delete ... flushCachetrue/后记 Cache Aside 并不能保证强一致性不然也就不会有 Paxos 这种复杂的共识算法了。 —— 《凤凰架构》 MyBatis 提供了缓存切口 采用 Redis 会引入什么问题 多实例之间缓存重复的失效问题查询时竞争写缓存的问题。ORM框架与中间件耦合违反单一职责。 万一遇到需强一致场景如何增强 两个查询请求同时到来此时缓存为空需要将MySql数据写入缓存。此时会出现竞争写缓存的情况。用写锁来保证缓存内的数据跟数据库保持一致。 public void query() {if (cache 命中) {retrun cache} 获取缓存写锁if (获取锁失败) {return 查数据库} 查数据库写缓存释放缓存写锁 }
http://www.zqtcl.cn/news/441146/

相关文章:

  • 电商网站销售数据分析上海企业信息登记号查询
  • 网站建设规划设计公司排名无锡网站建设 君通科技
  • 徐州网站开发要多少钱给个人网站做百度百科
  • 法语网站建设免费网站为何收录比较慢
  • 品牌网站推广软件seo内链优化
  • 广东律师事务所东莞网站建设做网站 怎么备案
  • shopnc本地生活o2o网站源码wordpress文章内多页效果
  • 深圳全国网站制作哪个好页面设计有哪几种风格
  • 网页设计作业网站素材和效果图夏天做啥网站致富
  • 利用帝国软件如何做网站网站友链交换平台
  • 简述网站开发技术深圳网站设计合理刻
  • wordpress网站名称寻找销售团队外包
  • 一浪网站建设网页qq邮箱
  • 做网站需要注册公司吗夫唯seo系统培训
  • 沈阳人流哪个医院好安全百度关键词优化怎么做
  • 1688网站怎么做分销高质量的网站内容建设
  • 网站建设公司济宁网站转跳怎么做
  • 镇江网站设计多少钱企业网络部署方案
  • 建网站的公司浩森宇特wordpress登录缓存
  • 便宜建站空间战队头像在线制作免费
  • 做招聘网站赚钱吗厦门网站建设哪里好
  • 新乡网站建设哪家公司好阿里巴巴做国际网站多少钱
  • 怎么在悉尼做网站dede做手机网站
  • 企业网站模板免费下载品牌建设专家库推荐表
  • 辽宁智能网站建设推荐网络营销推广方案创意
  • 安阳做一个网站多少钱东营做网站公司
  • 深圳市罗湖网站建设百度自助建站官网
  • 网站开发安装环境网站建设销售话术
  • 网站权重网站栏目划分的原则
  • 国际网站建设的目的我的百度账号登录