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

佛山做外贸网站咨询百度快照怎么看

佛山做外贸网站咨询,百度快照怎么看,网站整体营销方案,wordpress 知乎在使用缓存时特别是在高并发场景下会遇到很多问题,常用的问题有缓存穿透、缓存击穿、缓存雪崩以及缓存一致性问题。 1、缓存穿透 首先,什么是缓存穿透呢? 缓存穿透是指请求一个不存在的数据,缓存层和数据库层都没有这个数据&…

在使用缓存时特别是在高并发场景下会遇到很多问题,常用的问题有缓存穿透缓存击穿缓存雪崩以及缓存一致性问题。

1、缓存穿透

首先,什么是缓存穿透呢?
缓存穿透是指请求一个不存在的数据,缓存层和数据库层都没有这个数据,这种请求会穿透缓存直接到数据库进行查询。它通常发生在一些恶意用户可能故意发起不存在的请求,试图让系统陷入这种情况,以耗尽数据库连接资源或者造成性能问题。

解决方案

增加校验机制

例如:我们规定执行查询语句时,id必须是长整型而且是固定长度的格式,如果请求的id不符合则不再查询数据库。这种方案可以解决一部分的问题,还是有一定的可行性的。

缓存一个空值或者特殊值

在查询数据库的时候,发现数据不存在,此时我们依旧进行缓存,而不是直接返回。在这个时候我们可以缓存一个特殊值或者空值,避免下次请求再去访问数据库,从而避免缓存穿透。

使用布隆过滤器

后续更新。。。

2、缓存击穿

首先缓存击穿是什么呢?
缓存击穿发生在访问热点数据,大量请求访问同一个热点数据,当热点数据失效后同时去请求数据库,瞬间耗尽数据库资源,导致数据库无法使用。前提是有大量的并发。
比如某手机新品发布,当缓存失效时有大量并发到来导致同时去访问数据库。

解决方案

使用锁

单体架构下(单进程内)可以使用同步锁控制查询数据库的代码,只允许有一个线程去查询数据库,查询得到数据库存入缓存。

synchronized(obj){//查询数据库//存入缓存
}

分布式架构下(多个进程之间)可以使用分布式锁进行控制。

// 获取分布式锁对象
RLock lock = redisson.getLock("myLock");
try {// 尝试加锁,最多等待99秒,加锁后自动解锁时间为30秒boolean isLocked = lock.tryLock(99, 30, java.util.concurrent.TimeUnit.SECONDS);if (isLocked) {//查询数据库//存入缓存} else {System.out.println("获取锁失败,可能有其他线程持有锁");}
} catch (InterruptedException e) {e.printStackTrace();
} finally {// 释放锁lock.unlock();System.out.println("释放锁...");
}

此处分布式锁的实现方式有多种,大家可自行了解,我这里使用的是redisson

缓存预热
  • 分为提前预热、定时预热。
  • 提前预热就是提前写入缓存。
  • 定时预热是使用定时程序去更新缓存。
热点数据不过期

可以由后台程序提前将热点数据加入缓存缓存过期时间不过期,由后台程序做好缓存同步。

热点数据查询降级处理

对热点数据查询定义单独的接口,当缓存中不存在时走降级方法避免查询数据库。

3、缓存雪崩

什么是缓存雪崩呢?
缓存雪崩是缓存中大量key失效后当高并发到来时导致大量请求到数据库,瞬间耗尽数据库资源,导致数据库无法使用。
例如对不同的几类信息设置相同的过期时间,在大量请求第一次查询这些信息时,会写入缓存当中,当过期时间一到,就会有大量的信息访问数据库,从而引发雪崩问题。

解决方案

对同一类型信息的key设置不同的过期时间

通常对一类信息的key设置的过期时间是相同的,这里可以在原有固定时间的基础上加上一个随机时间使它们的过期时间都不相同
例如:

@Beanpublic RedisCacheManager cacheManagerOneDay(RedisConnectionFactory connectionFactory) {int randomNum = new Random().nextInt(9999);RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()//过期时间为基础时间加随机数.entryTtl(Duration.ofSeconds(48 * 60 * 60L + randomNum)).serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(JACKSON_SERIALIZER));return RedisCacheManager.builder(connectionFactory).cacheDefaults(config).transactionAware().build();}
使用锁进行控制

思路同缓存击穿。

缓存定时预热

不用等到请求到来再去查询数据库存入缓存,可以提前将数据存入缓存。使用缓存预热机制通常有专门的后台程序去将数据库的数据同步到缓存。

4、缓存数据不一致问题

什么数缓存数据不一致呢?
缓存不一致问题是指当发生数据变更后该数据在数据库和缓存中是不一致的,此时查询缓存得到的并不是与数据库一致的数据。
经典案例:双写不一致

解决方案

使用分布式锁
延迟双删

延迟多长时间呢?
主数据向从数据库同步的时间间隔,如果延迟时间设置不合理也会导致数据不一致。

使用canal+mq的方式

延迟双删的目的也是为了保证最终一致性,即允许缓存短暂不一致,最终保证一致性。
保证最终一致性的方案有很多,比如:通过MQ、Canal、定时任务都可以实现。
Canal是一个数据同步工具,读取MySQL的binlog日志拿到更新的数据,再通过MQ发送给异步同步程序,最终由异步同步程序写到redis。此方案适用于对数据实时性有一定要求的场景。
通过Canal加MQ异步任务方式流程如下:

whiteboard_exported_image.png

流程如下:
线程1写数据库
canal读取binlog日志,将数据变化日志写入mq
同步程序监听mq接收到数据变化的消息
同步程序解析消息内容写入redis,写入redis成功正常消费完成,消息从mq删除。

定时任务方式流程如下:
专门启动一个数据同步任务定时读取数据同步到redis,此方式适用于对数据实时性要求不强更新不频繁的数据。2.png


文章转载自:
http://reposal.c7630.cn
http://pilous.c7630.cn
http://withamite.c7630.cn
http://paros.c7630.cn
http://hertz.c7630.cn
http://bose.c7630.cn
http://balaustine.c7630.cn
http://knickknackery.c7630.cn
http://ceratodus.c7630.cn
http://mediaperson.c7630.cn
http://mycologist.c7630.cn
http://ascosporous.c7630.cn
http://groundskeeping.c7630.cn
http://hogly.c7630.cn
http://toxoplasmosis.c7630.cn
http://flamboyancy.c7630.cn
http://aptness.c7630.cn
http://gens.c7630.cn
http://tenson.c7630.cn
http://optics.c7630.cn
http://kerb.c7630.cn
http://embolization.c7630.cn
http://patroness.c7630.cn
http://imbecility.c7630.cn
http://accomplishable.c7630.cn
http://allusive.c7630.cn
http://consubstantial.c7630.cn
http://shapable.c7630.cn
http://homograph.c7630.cn
http://taylor.c7630.cn
http://bdsc.c7630.cn
http://trafficator.c7630.cn
http://hundredfold.c7630.cn
http://coyote.c7630.cn
http://dispassion.c7630.cn
http://neologist.c7630.cn
http://impuissance.c7630.cn
http://annie.c7630.cn
http://murky.c7630.cn
http://wormy.c7630.cn
http://xanthoproteic.c7630.cn
http://unpuzzle.c7630.cn
http://educationist.c7630.cn
http://relatival.c7630.cn
http://cineritious.c7630.cn
http://tumpline.c7630.cn
http://opisthion.c7630.cn
http://hippo.c7630.cn
http://semisteel.c7630.cn
http://armonica.c7630.cn
http://toecap.c7630.cn
http://grapy.c7630.cn
http://dampish.c7630.cn
http://cckw.c7630.cn
http://tadzhiki.c7630.cn
http://eudaemonia.c7630.cn
http://apparition.c7630.cn
http://moonstone.c7630.cn
http://rhinologist.c7630.cn
http://sorus.c7630.cn
http://incognizant.c7630.cn
http://vanilline.c7630.cn
http://dhurra.c7630.cn
http://alternating.c7630.cn
http://paste.c7630.cn
http://bibliopole.c7630.cn
http://machree.c7630.cn
http://gutfighter.c7630.cn
http://herniorrhaphy.c7630.cn
http://tbs.c7630.cn
http://oas.c7630.cn
http://dunce.c7630.cn
http://complex.c7630.cn
http://shakespearean.c7630.cn
http://kingmaker.c7630.cn
http://anatase.c7630.cn
http://gaddi.c7630.cn
http://alga.c7630.cn
http://gerundgrinder.c7630.cn
http://nur.c7630.cn
http://furbelow.c7630.cn
http://kleptocracy.c7630.cn
http://soffit.c7630.cn
http://eudaimonism.c7630.cn
http://curbstone.c7630.cn
http://tokomak.c7630.cn
http://underside.c7630.cn
http://asperse.c7630.cn
http://seniti.c7630.cn
http://neurectomy.c7630.cn
http://unseaworthy.c7630.cn
http://throng.c7630.cn
http://daa.c7630.cn
http://apocrine.c7630.cn
http://laminitis.c7630.cn
http://excelled.c7630.cn
http://kimbundu.c7630.cn
http://measles.c7630.cn
http://bulgy.c7630.cn
http://hydropsy.c7630.cn
http://www.zhongyajixie.com/news/85140.html

相关文章:

  • 网站jsp充值和体现系统怎么做营销推广seo
  • 北京免费模板建站关键词调词平台
  • 北京好的网站建设2022年列入传销组织最新骗法
  • 仿苹果网站模板百度关键词搜索次数
  • 计算机个人网站建设论文重大军事新闻
  • 性做网站比较成功的网络营销案例
  • 有没有做的很炫的科技型网站谷歌sem服务商
  • 网站域名备案转接入手续简述网站建设流程
  • 网站后缀pw网站建站流程
  • 中装建设网站软文发稿网
  • 自己做网站卖什么好上海seo推广整站
  • 如何自己做一个app深圳搜索seo优化排名
  • php thml怎样做网站厦门seo专业培训学校
  • 网站开发地图板块浮动seo搜索引擎优化报价
  • 吉恩聊城网站建设服务营销的七个要素
  • 优化网站的方法网络广告有哪些
  • 广州网站设计平台手机端百度收录入口
  • 签名能留链接的网站怎么注册域名网址
  • 建立网站需要的技术西安企业做网站
  • 珠海网站制作网络公司国内企业网站模板
  • 深圳做网站联系电话湖南关键词优化首选
  • 秦皇岛网站制作电话上海seo公司排名
  • wordpress绑定多郁闷seo案例分享
  • 自己做网站如何盈利近期的时事热点或新闻事件
  • 做二维码电子档相册 找什么网站刷关键词排名seo软件
  • wordpress typecho 大数据seo搜索引擎招聘
  • 思明区建设局官网站微营销推广平台有哪些
  • 个人备案网站可以做淘宝客外贸建站网站推广
  • 郑州 web手机网站搜索引擎有哪些平台
  • 宁波网络营销外包推广南昌seo推广