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

潍坊网站制作价格平面设计能做什么工作

潍坊网站制作价格,平面设计能做什么工作,wordpress如何修改主页,海外版tiktok免费入口条件 缓存击穿是应为Redis某个缓存数据设置了过期时间#xff0c;而刚好有大并发数据请求这个数据#xff0c;导致DB有大量请求#xff0c;引发DB崩溃。 第一种方法就是设置互称锁 当缓存失效时不立即删除缓存而是用setnx设置一个互斥锁#xff0c;当操作完成后在load db…条件 缓存击穿是应为Redis某个缓存数据设置了过期时间而刚好有大并发数据请求这个数据导致DB有大量请求引发DB崩溃。 第一种方法就是设置互称锁 当缓存失效时不立即删除缓存而是用setnx设置一个互斥锁当操作完成后在load db并回设缓存否则重试get缓存方法这样就减少了直接大量访问DB的请求。 实现 Service public class SysRoleServiceImpl extends ServiceImplSysRoleDao, SysRoleDO implements SysRoleService {Resourceprivate RedissonClient redissonClient;Overridepublic ListSysRoleDO test() throws Exception {Object roles redissonClient.getBucket(role).get();// 先查询缓存缓存中有则直接返回if (Objects.nonNull(roles)) {return JSON.parseArray(roles.toString(), SysRoleDO.class);}RLock lock redissonClient.getLock(role-lock);boolean isLock lock.tryLock();if (isLock) {// 获取到锁查询数据库并将查询结果放入缓存try {Object roleList redissonClient.getBucket(role).get();// 双重检查锁当多个线程同时判断到缓存中取不到值上一个获取到锁的线程已经将数据放入缓存下一个线程直接取缓存if (Objects.nonNull(roleList)) {return JSON.parseArray(roleList.toString(), SysRoleDO.class);}// 查询数据库ListSysRoleDO list this.list();// 将数据放入缓存redissonClient.getBucket(role).set(list, 60L, TimeUnit.SECONDS);return list;} finally {lock.unlock();}}int retryTimes 3;Object roleList null;// 当缓存中取不到值时sleep300毫秒最多循环3次while (Objects.isNull(roleList) retryTimes 0) {// 休眠300ms后递归TimeUnit.MILLISECONDS.sleep(300L);roleList redissonClient.getBucket(role).get();retryTimes--;}// 循环等待后缓存中取到值直接返回仍然取不到值则抛异常if (Objects.nonNull(roleList)) {return JSON.parseArray(roleList.toString(), SysRoleDO.class);}throw new RuntimeException(查询异常);} }第二种解决缓存击穿的实现就是设置key逻辑过期时间 1.在设置key的时候过期时间字段并一块存入缓存不给当前key设置过期时间。 2.当查询的时候在redis中判断是否过期条件就是字段设置时间与当前时间对比。 3.如果过期就开通另一个线程进行数据同步当前线程正常返回数据但数据就不是最新的时老的数据不能保证强一致。 实现 //逻辑过期public Shop queryWithLogicalExpire(Long id) {String key CACHE_SHOP_KEY id;//1.从redis查询商铺缓存String shopJson stringRedisTemplate.opsForValue().get(key);//2.判断是否存在if (StrUtil.isBlank(shopJson)) {//3.未命中return null;}//4.命中需要先把json反序列化为对象RedisData redisData JSONUtil.toBean(shopJson, RedisData.class);Shop shop (Shop) redisData.getData();LocalDateTime expireTime redisData.getExpireTime();//5.判断是否过期if (expireTime.isAfter(LocalDateTime.now())) {//5.1还未过期return shop;}//5.2已经过期需要缓存重建//6.缓存重建//6.1获取互斥锁String lockKey LOCK_SHOP_KEY id;boolean isLock tryLock(lockKey);//6.2判断是否获取锁成功if (isLock) {// 6.3成功开启独立线程实现缓存重建CACHE_REBUILD_EXECUTOR.submit(() - {try {//重建缓存this.saveShop2Redis(id, 20L);} catch (Exception e) {e.printStackTrace();} finally {//释放锁unlock(lockKey);}});}//6.4返回过期的店铺信息//7.返回return shop;} 总结 如果要求数据的强一致测使用分布式锁如果要求高可用就使用逻辑过期就可以了。
http://www.hkea.cn/news/14324335/

相关文章:

  • 影视网站怎么做内链优化大师怎么提交作业
  • 长春火车站建在哪里网站被网站建设的人控制了
  • 建设网站对于客户自己搭建个人网站
  • 广州哪家公司做网站wordpress点击外链
  • 设计企业网站步骤深圳建设交易主页
  • 图书电子商务网站建设wordpress底部友情链接
  • 深圳做网站好的公司wordpress地区分站
  • 成都青羊网站建设潍坊品牌设计公司
  • 网站没有权重wordpress 改 分隔
  • 建设学院实验网站的作用设计本官方网站电脑版
  • 免费个人网站建设大全外贸做中英文网站
  • 设计电子商务网站主页网站开发报价评估
  • 做网站需要学php哪些技术短视频营销推广公司
  • 上海知名的网站建设公司武功县住房和城乡建设局网站
  • 做宠物的网站大庆网站建设大庆
  • 网站建设 企业观点建设招标网 官方网站
  • 做网站安卓客户端西宁建设网站
  • 俄语 网站wordpress主题讲解
  • 西安模板网站服务商企业申请域名
  • 网站建设唯美谷网站那个网站可以做雪花特效
  • 做pc端网站好么wordpress建站用什么
  • 广州白云学校网站建设百度搜索网站
  • 网站快速备案多少钱wordpress php 7.2
  • 提供网站建设电话深圳做模板网站的公司
  • 怎么做网站主114信息网免费发布信息
  • 网站后台管理模板psd群晖直接编辑wordpress
  • 企业网站建设需要多少钱成都开发一个网站的流程
  • 怎么做自己的单页网站装修之家网站
  • 教做香肠的网站中国地震网今天发生地震最新消息
  • 网站大屏轮播图效果怎么做的淘宝网站打算找人做