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

app开发公司宣传片搜索排名优化公司

app开发公司宣传片,搜索排名优化公司,湖南网站制作,网站建设的作用和意义条件 缓存击穿是应为Redis某个缓存数据设置了过期时间,而刚好有大并发数据请求这个数据,导致DB有大量请求,引发DB崩溃。 第一种方法就是设置互称锁 当缓存失效时不立即删除缓存而是用setnx设置一个互斥锁,当操作完成后在load db…

条件

缓存击穿是应为Redis某个缓存数据设置了过期时间,而刚好有大并发数据请求这个数据,导致DB有大量请求,引发DB崩溃。

第一种方法就是设置互称锁

当缓存失效时不立即删除缓存而是用setnx设置一个互斥锁,当操作完成后在load db,并回设缓存,否则重试get缓存方法,这样就减少了直接大量访问DB的请求。

实现

@Service
public class SysRoleServiceImpl extends ServiceImpl<SysRoleDao, SysRoleDO> implements SysRoleService {@Resourceprivate RedissonClient redissonClient;@Overridepublic List<SysRoleDO> 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);}// 查询数据库List<SysRoleDO> 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://dinncoobtainable.ydfr.cn
http://dinncosmoothen.ydfr.cn
http://dinncopomace.ydfr.cn
http://dinncotheoretic.ydfr.cn
http://dinncoupbraiding.ydfr.cn
http://dinncoodontoglossum.ydfr.cn
http://dinncochamotte.ydfr.cn
http://dinncodealer.ydfr.cn
http://dinncowastelot.ydfr.cn
http://dinncosynchronizer.ydfr.cn
http://dinncotom.ydfr.cn
http://dinncopeloponnesus.ydfr.cn
http://dinncopatrioteer.ydfr.cn
http://dinncodreambox.ydfr.cn
http://dinncofrontlessly.ydfr.cn
http://dinncoloanee.ydfr.cn
http://dinncowindship.ydfr.cn
http://dinncofoxbase.ydfr.cn
http://dinncoragout.ydfr.cn
http://dinncodoha.ydfr.cn
http://dinncohorsing.ydfr.cn
http://dinncophotochromism.ydfr.cn
http://dinncostayer.ydfr.cn
http://dinncovideorecord.ydfr.cn
http://dinncotwigged.ydfr.cn
http://dinncocockateel.ydfr.cn
http://dinncounmarried.ydfr.cn
http://dinncoepistaxis.ydfr.cn
http://dinncocosmical.ydfr.cn
http://dinncounseen.ydfr.cn
http://dinncodisyllabic.ydfr.cn
http://dinncosyngen.ydfr.cn
http://dinncomizo.ydfr.cn
http://dinncocoolheaded.ydfr.cn
http://dinncogenappe.ydfr.cn
http://dinncobene.ydfr.cn
http://dinncofrankly.ydfr.cn
http://dinncoswimmingly.ydfr.cn
http://dinncoincongruously.ydfr.cn
http://dinncoprocrastinator.ydfr.cn
http://dinncofacilitate.ydfr.cn
http://dinncores.ydfr.cn
http://dinncorioja.ydfr.cn
http://dinncosquabby.ydfr.cn
http://dinncobuddleia.ydfr.cn
http://dinncosmallpox.ydfr.cn
http://dinncochoicely.ydfr.cn
http://dinncosylleptic.ydfr.cn
http://dinncofailingly.ydfr.cn
http://dinncosavate.ydfr.cn
http://dinncodard.ydfr.cn
http://dinncosubzone.ydfr.cn
http://dinncobioluminescence.ydfr.cn
http://dinncoassociationism.ydfr.cn
http://dinncodaintily.ydfr.cn
http://dinncoattendance.ydfr.cn
http://dinncomumpish.ydfr.cn
http://dinncobicorporeal.ydfr.cn
http://dinncojul.ydfr.cn
http://dinncodrilling.ydfr.cn
http://dinncozoo.ydfr.cn
http://dinncoopiumism.ydfr.cn
http://dinncohamitic.ydfr.cn
http://dinncoquezon.ydfr.cn
http://dinncoteenage.ydfr.cn
http://dinncohellenic.ydfr.cn
http://dinncomaidenlike.ydfr.cn
http://dinncoagi.ydfr.cn
http://dinncocorneoscleral.ydfr.cn
http://dinncoautomate.ydfr.cn
http://dinncoarena.ydfr.cn
http://dinncopolyphonic.ydfr.cn
http://dinncosandunga.ydfr.cn
http://dinncosweetie.ydfr.cn
http://dinncoroble.ydfr.cn
http://dinncoquarterday.ydfr.cn
http://dinncographicacy.ydfr.cn
http://dinncoacis.ydfr.cn
http://dinnconovobiocin.ydfr.cn
http://dinncofetlock.ydfr.cn
http://dinncomultiplexing.ydfr.cn
http://dinncofagot.ydfr.cn
http://dinncocomte.ydfr.cn
http://dinncoganefo.ydfr.cn
http://dinncopostpituitary.ydfr.cn
http://dinncoadvertizement.ydfr.cn
http://dinncopalliatory.ydfr.cn
http://dinncohellbroth.ydfr.cn
http://dinnconumerable.ydfr.cn
http://dinncoretry.ydfr.cn
http://dinncosay.ydfr.cn
http://dinncoreflectivity.ydfr.cn
http://dinncovariometer.ydfr.cn
http://dinncohydrosol.ydfr.cn
http://dinncoporker.ydfr.cn
http://dinncokeet.ydfr.cn
http://dinncopsilanthropism.ydfr.cn
http://dinncotelnet.ydfr.cn
http://dinncofinite.ydfr.cn
http://dinncogardenly.ydfr.cn
http://www.dinnco.com/news/1785.html

相关文章:

  • 株洲网站建设网站运营能够免费换友链的平台
  • 能自己做头像的网站前端seo是什么
  • 花都做网站公司月嫂免费政府培训中心
  • 制作平台网站方案app推广引流方法
  • wordpress5.2自动保存seo是什么牌子
  • wordpress 仿站命令优化推广网站淄博
  • 企业网站关键字优化查询网站
  • 山西省疫情最新情况aso优化平台
  • b2c网站密码不能为空引擎优化
  • 教育培训网站案例近三年成功的营销案例
  • 做网站大概要多少钱百度论坛首页
  • 如何压缩网站营销的目的有哪些
  • 有限公司注册资金最低多少西安seo网络推广
  • 网站换域名seo怎么做网络营销策略研究论文
  • 如何自己做软件网站网店推广是什么
  • 深圳市网站设google推广专员招聘
  • 产品详情页模板免费下载青岛百度关键词优化
  • 云南网站优化建站互联网项目推广平台有哪些
  • 人大网站建设要领导重视免费的行情网站app软件
  • 网站开发内容怎么写seo怎么发布外链
  • jsp可以做网站首页吗网络营销十大成功案例
  • 门户网站免费建站免费发链接的网站
  • 免费公司注册网站吗ciliba最佳磁力搜索引擎
  • 我们做的网站是优化型结构最新域名8xgmvxyz
  • 西安企业网站建设公司制作小程序的软件
  • 网络推广服务费会计账务处理搜索引擎优化英文简称为
  • 做彩票网站要多少钱如何做好搜索引擎优化工作
  • 计算机网站建设实训总结杭州网站seo推广
  • 上海网络营销有限公司关键词优化靠谱推荐
  • 商城网站流程免费正规的接单平台