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

电商网站维护网络推广运营优化

电商网站维护,网络推广运营优化,子域名大全,网站兼职做计划赚小钱文章目录 1.缓存基础2.缓存异步场景1.缓存穿透2.缓存击穿3.缓存雪崩总结 3.缓存一致性 1.缓存基础 Redis由于性能高效,通常可以做数据库存储的缓存。一般而言,缓存分为服务端缓存和客户端缓存。缓存有以下三种模式: Cache Aside&#xff08…

文章目录

  • 1.缓存基础
  • 2.缓存异步场景
    • 1.缓存穿透
    • 2.缓存击穿
    • 3.缓存雪崩
    • 总结
  • 3.缓存一致性

1.缓存基础

Redis由于性能高效,通常可以做数据库存储的缓存。一般而言,缓存分为服务端缓存和客户端缓存。缓存有以下三种模式:

  • Cache Aside(旁路缓存模式)
  • Read Write Through Cache(读写穿透模式)
  • Write Behind(异步缓存写入模式)

2.缓存异步场景

1.缓存穿透

缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求。由于缓存时不命中后查询DB时被动写入的,并且在DB查不到数据则不写入缓存,这就会导致这个请求每次都要到存储层查询,缓存毫无意义了。在流量大时,DB也可能会挂掉。

解决方案

  1. 接口增加校验,鉴权ID,直接拦截。
  2. 缓存空值(key-null),给这个key设置一个有效时间,在这个时间内这个key的请求直接拦截。
  3. 布隆过滤器。

2.缓存击穿

缓存击穿是指缓存中没有但数据库中有的数据,由于并发用户过多,同时读缓存又没有读到数据,去到DB读取数据,引起DB压力过大。(一般是缓存时间到期,没来得及重新产生)

解决方案

  1. 热点数据增加过期时间,避免因为过期失效而被穿透。
  2. 重建缓存加互斥锁,线程争抢锁,拿到锁的线程查询数据库,然后重建缓存,争抢失败的,加一个睡眠然后循环重试。(重建的这个缓存,之后的请求就可以直接查询这个缓存)

3.缓存雪崩

缓存雪崩是指大量的应用请求因为异常无法在Redis缓存中进行处理,而是直接打到数据库,引起数据库压力过大甚至宕机。

解决方案

  1. 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
  2. 重建缓存加互斥锁,线程争抢锁,拿到锁的线程查询数据库,然后重建缓存,争抢失败的,加一个睡眠然后循环重试。

总结

1、缓存击穿和缓存穿透有什么区别?
缓存击穿是指key在数据库中存在而不在缓存中,被一波大流量击垮的场景。
缓存穿透是指key不在缓存和数据库,而被大波流量打击的场景。
主要就是前者是由数据的,只是未来得及加载到缓存,另一个是完全没有。

2、缓存雪崩和缓存击穿有什么区别?
都是由key缓存过期导致的,不同点是缓存击穿是某个热点key过期,就被大波流量访问,雪崩是一群key同时过期,又一起访问并击垮了数据库。

3.缓存一致性

缓存不一致是指在分布式系统中,由于缓存和后端存储的数据之间不同步,导致缓存中的数据和真实数据不一致的问题。主要在缓存的读写过程中,尤其高并发和分布式环境。


要怎么解决缓存不一致呢?以下是大致的方向:


  1. 确认业务对延迟性的要求,如果要求高且数据可能变化,别用缓存,因为用缓存需要接收一定程序的延迟。
  2. 通常,使用过期时间兜底,也是最普遍的方式,如果希望减少缓存不一致的时间,可以增加个删除逻辑,提升一致性。
  3. 订阅binlog来更新,适合场景是不需要过期,直接同步数据。

接下来根据以上的几个方向来谈一谈怎么保存一致性。

方向一

使用Redis的过期时间,MySQL更新时,Redis不做处理,等待缓存过期失效,再从mySQL拉取到缓存。
这种方式的优点就是开发成本低、易于实现、出问题概率小。但是完全依赖于过期时间,如果时间过短,会导致缓存频繁失效,过长,会导致长时间数据不一致。

方向二

不仅仅通过key的过期时间兜底,还在MySQL更新时,同时尝试操作Redis(1.更新Redis,2.删除Redis)。更新Redis容易造成时序性问题,所以更多的是使用删除Redis,等待下次访问再加载回来。
上面所说的删除,也可能会删除失败,那么就忽略它,有过期时间兜底。

方向三

订阅MySQL的binlog日志,解析日志内容,再更新到Redis。(比如阿里巴巴的开源组件canal,https://github.com/alibaba/canal)。也就是说另起一个服务slave,订阅binlog日志,更新任务通过这个服务自动完成。(无时序性问题,和业务完全解耦,但是引入了消息队列这种重量级组件。)

Redis做旁路缓存,mySQL更新了,此时何去何从?

使用过期时间来兜底,并且在更新DB后删除缓存来提升一致性的方式。
(ps:那么什么情况适合使用订阅binlog?)
这种模式更像是同步数据,其实比较适合缓存很长时间过期、或者不过期的场景。

http://www.zhongyajixie.com/news/61578.html

相关文章:

  • 做网站模板链接放哪里直通车关键词怎么选 选几个
  • 怎么做百度快照让网站排前面长春网站推广公司
  • 买了个服务器 怎么做网站谷歌seo一个月费用需要2万吗
  • 微信小程序 编程sem优化软件选哪家
  • 网上注册公司需要上传哪些资料seo顾问赚钱吗
  • wordpress body_class海会网络做的网站怎么做优化
  • 漳州专业网站建设公司淮北seo
  • 怎么用ps做网站上的产品图十大免费网站推广平台
  • 建设境外网站石家庄市人民政府官网
  • 河北最近发生的重大新闻六安seo
  • 门户网站建设自查整改如何做外贸网站的推广
  • 网站怎么怎么做关键字全球外贸b2b网站
  • 银川网站制作公司正规seo大概多少钱
  • .net 网站开发教程seo关键词排名教程
  • 网站开发行业怎么样百度广告平台电话
  • 自己网站怎么做百度推广西安seo计费管理
  • 诺诚建设工程有限公司网站查看浏览过的历史记录百度
  • 营销型网站有哪些出名的免费学生网页制作成品
  • 做网站需要什么特色申请自己的网站
  • 桓台网站推广软件开发外包
  • 山东住房和城乡建设厅网站首页seo关键词软件
  • 中小企业电商网站建设的重要性百度seo推广怎么做
  • 做中英文网站公司郑州百度推广公司
  • 上海频道做网站怎么样厦门人才网官网登录
  • 成都创新互联网站建设站长工具ip地址查询
  • 医疗美容网站模板百度一下你就知道手机版
  • 采购网1688杭州谷歌seo公司
  • 网站关键词优化排名技巧站长工具在线
  • 网站自主制作平台杭州做seo的公司
  • 有服务器有域名怎么做网站全网搜索引擎优化