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

怎么做好手机网站开发网站公司名称大全

怎么做好手机网站开发,网站公司名称大全,网站投票功能,营销公司介绍双写一致性 场景导入 如果现在有个数据要更新#xff0c;是先删除缓存#xff0c;还是先操作数据库呢#xff1f;当多个线程同时进行访问数据的操作#xff0c;又是什么情况呢#xff1f; 以先删除缓存#xff0c;再操作数据库为例 多个线程运行的正常的流程应该如下…双写一致性 场景导入 如果现在有个数据要更新是先删除缓存还是先操作数据库呢当多个线程同时进行访问数据的操作又是什么情况呢 以先删除缓存再操作数据库为例 多个线程运行的正常的流程应该如下 线程1先访问数据它首先删除缓存然后更新数据库。之后线程2来查询缓存未命中后查询数据库随后写入缓存。 也就是说线程1负责删除缓存并更新数据库线程2负责查询数据库并写入缓存。 但如果线程2在线程1还未更新数据库的时候就查询数据库了那么就会出问题。 以先操作数据库再删除缓存为例。 正常流程应该如下 线程2负责更新数据库并删除缓存。线程1负责查询数据库并写入缓存。 其实也可以说 线程1负责更新数据库并删除缓存。线程2负责查询数据库并写入缓存。我把上面的“以先删除缓存再操作数据库为例”搬过来了可以对比一下。 也就是说线程1负责删除缓存并更新数据库线程2负责查询数据库并写入缓存。发现就是前半部分顺序颠倒了而已。 同样的 但如果线程1在线程2还更新数据库的时候就查询数据库了那么就会出问题。我同样把上面的异常情况搬过来对比。 但如果线程2在线程1还未更新数据库的时候就查询数据库了那么就会出问题。定义 当修改了数据库的数据也要同时更新缓存的数据缓存和数据库的数据要保持一致 解决方案 能保障强一致性延时双删、分布式锁 不能保障强一致性只能保障最终的一致性异步通知 延时双删强一致性 延时双删就是正常删除缓存、修改数据库后还要延时一会再次删除缓存。 因为从上面的场景导入我们发现无论是先删除缓存还是先修改数据库都会有数据不一致即脏数据的风险。 再次把先删除缓存再修改数据库的异常流程图拿过来我们发现整个流程走完后线程1更新数据库拿到的是正确的值。而线程2拿到的是错误的值这时只要我们以数据库为主删除缓存再写入数据库的值那么就能拿到正确的值。 此外延时一会是因为一般数据库都是主从分离读写分离的。延时是为了让主库有时间通知到从库所有数据库的更新操作全部走完。 延时双删极大程度上避免了脏数据的风险但因为有延时的存在延时时间不好控制所以也不能说百分百避免。 分布式锁强一致性 互斥锁 直接加互斥锁能保障数据的强一致性但是性能较低。此时我们就需要优化一下互斥锁。因为存入缓存的数据一般都是读多写少。为此我们引入两个单独的锁分别叫共享锁和排他锁。 共享锁/读锁 共享锁又叫读锁readLock加锁之后其他线程可以共享读操作。 排他锁/独占锁 排他锁又叫独占锁writeLock加锁之后阻塞其他线程读和写操作。 混合使用的流程和代码 我们想要拿到共享锁或者排他锁都需要先拿到读写锁。 通过固定代码可以拿到读写锁。 RReadWriteLock readWriteLock redissonClient.getReadWriteLock(ITEM_READ_WRITE_LOCK);随后分别拿到共享锁和排他锁。注意两个锁需要是同一把读写锁 RLock readLock readWriteLock.readLock(); RLock writeLock readWriteLock.writeLock();读操作的代码 public void getById(Integer id){RReadWriteLock readWriteLock redissonClient.getReadWriteLock(ITEM_READ_WRITE_LOCK);RLock readLock readWriteLock.readLock();try{readLock.lock();System.out.println(readLock...);Item item (Item) redisTemplate.opsForValue().get(itemid);if(item ! null){return item;}item new Item(id, 华为手机, 华为手机, 5999.00);redisTemplate.opsForValue().set(itemid, item);return item;}finally{readLock.unlock();} }写操作的代码 public void updateById(Integer id){RReadWriteLock readWriteLock redissonClient.getReadWriteLock(ITEM_READ_WRITE_LOCK);RLock writeLock readWriteLock.writeLock();try{writeLock.lock();System.out.println(writeLock...);Item item new Item(id, 华为手机, 华为手机, 5299.00);try{Thread.sleep(10000);}catch(InterruptedException e){e.printStackTrace();}redisTemplate.delete(itemid);}finally{writeLock.unlock();} }异步通知 异步通知的也有两个主流方案MQ、Canal canal的方案对于业务代码几乎是零侵入的。 面试回答模板 redis为缓存mysql的数据如何与redis进行同步呢 背熟以下回答大概用时1min。 这个要看业务需求如果要求数据的强一致性那么一般使用读写锁来实现。读写锁是一种分布式锁机制里面包括两种锁一个叫共享锁在读的时候添加共享锁可以保证读读不互斥读写互斥。一个叫排他锁在写的时候添加排他锁可以保证读写都互斥避免脏数据的风险。 如果不要求数据的强一致性那么就可以用基于MQ或者canal中间件的异步通知来实现redis和mysql的双写一致性。 你的项目中用到了redis那你mysql的数据如何与redis进行同步呢 ——————————————强一致性策略—————————————————— 以我最近做的这个项目为例里面有xxxx根据自己的简历上写的功能需要让数据库与redis高度保持一致因为要求时效性比较高我们当时采用的读写锁保证的强一致性。 读写锁是一种分布式锁机制里面包括两种锁一个叫共享锁在读的时候添加共享锁可以保证读读不互斥读写互斥。一个叫排他锁在写的时候添加排他锁可以保证读写都互斥避免脏数据的风险。这里面需要注意的是读方法和写方法上需要使用同一把锁才行。 面试官那这个排他锁是如何保证读写、读读互斥的呢 候选人其实排他锁底层使用也是setnx保证了同时只能有一个线程操作锁住的方法 面试官你听说过延时双删吗为什么不用它呢 候选人延迟双删如果是写操作我们先把缓存中的数据删除然后更新数据库最后再延时删除缓存中的数据其中这个延时多久不太好确定在延时的过程中可能会出现脏数据并不能保证强一致性所以没有采用它。 ——————————————非强一致性策略—————————————————— 面试官redis做为缓存mysql的数据如何与redis进行同步呢双写一致性 候选人嗯就说我最近做的这个项目里面有xxxx根据自己的简历上写的功能数据同步可以有一定的延时符合大部分业务 我们当时采用的阿里的canal组件实现数据同步不需要更改业务代码部署一个canal服务。canal服务把自己伪装成mysql的一个从节点当mysql数据更新以后canal会读取binlog数据然后在通过canal的客户端获取到数据更新缓存即可。
http://www.huolong8.cn/news/168289/

相关文章:

  • 企业官网建站淘宝联盟推广网站建设
  • 网站常见的域名wordpress注明网站
  • 兴化网站网站建设网站如何在百度
  • 中国建设建设工程造价管理协会网站教学设计代做去什么网站
  • 南京林业大学实验与建设网站深夜适合男人看的软件
  • 做电影网站解析如何用ip做网站
  • 工厂做哪个网站好网站的关键词在哪里设置
  • 建设网站需要懂什么做销售在哪个网站找客户
  • 网站建设服务的具体条件wordpress 腾讯视频插件
  • 沧州手机网站开发网站 建设 现状
  • 邢台网站推广公司宁波网站建设的企业
  • 百度推广 网站建设海尔网站推广策划方案
  • 贵阳网站开发人员工资网站右侧浮动微信二维码
  • 提高网站排名软件医疗网站建设哪个好用
  • 网站seo计划书intitle 做网站
  • 网站推广公司官网为什么我的网站备案通过还是显示未备案
  • 服装品牌建设网站的目的做网站每年需要多少维护费
  • 自适应网站模板建站学校网站建设 应用情况
  • 洛阳网站设计哪家便宜建设三轮摩托车官网
  • 今天上午北京发生了什么无锡seo推广公司
  • 租车网站制作保定的网站建设
  • 做外贸网站的都有哪些类型的公司最新网游排行榜2023
  • 网站建设ppt百度文库青海建设兵团网站小院
  • 中山城市建设集团网站如何在局域网做网站
  • 金华网站制作建设织梦帝国wordpress
  • 做个店铺小程序多少钱企业网站优化公司哪家好
  • 长春企业网站制作优化学生网页设计成品网站
  • 学校网站的作用和意义石家庄企业商城版网站建设
  • wordpress 绑定多个二级域名选一个网站做seo
  • 菠菜网站怎么做推广比较好中山企业网站建设方案