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

网站起名字大全淘宝客网站备案

网站起名字大全,淘宝客网站备案,建筑铝模板多少钱一平方米,wordpress搜索页面怎么仿在我们日常的开发中#xff0c;无不都是使用数据库来进行数据的存储#xff0c;由于一般的系统任务中通常不会存在高并发的情况#xff0c;所以这样看起来并没有什么问题#xff0c;可是一旦涉及大数据量的需求#xff0c;比如一些商品抢购的情景#xff0c;或者是主页访…在我们日常的开发中无不都是使用数据库来进行数据的存储由于一般的系统任务中通常不会存在高并发的情况所以这样看起来并没有什么问题可是一旦涉及大数据量的需求比如一些商品抢购的情景或者是主页访问量瞬间较大的时候单一使用数据库来保存数据的系统会因为面向磁盘磁盘读/写速度比较慢的问题而存在严重的性能弊端一瞬间成千上万的请求到来需要系统在极短的时间内完成成千上万次的读/写操作这个时候往往不是数据库能够承受的极其容易造成数据库系统瘫痪最终导致服务宕机的严重生产问题。 为了克服上述的问题项目通常会引入NoSQL技术这是一种基于内存的数据库并且提供一定的持久化功能。 redis技术就是NoSQL技术中的一种但是引入redis又有可能出现缓存穿透缓存击穿缓存雪崩等问题。本文就对这三种问题进行较深入剖析。 一、缓存穿透 1.1 什么是缓存穿透 缓存穿透是指查询一个根本不存在的数据缓存层和持久层都不会命中请求都会压到数据库从而压垮数据库。比如用户一个不存在的用户id获取用户信息 在日常工作中出于容错的考虑如果从持久层查不到数据则不写入缓存层缓存穿透将导致不存在的数据每次请求都要到持久层去查询失去了缓存保护后端持久的意义。 image-20221126150803127 1.2 缓存穿透解决方案 一个一定不存在缓存及查询不到的数据由于缓存是不命中时被动写的并且出于容错考虑如果从存储层查不到数据则不写入缓存这将导致这个不存在的数据每次请求都要到存储层去查询失去了缓存的意义。 下面有3种方法可以有效地解决缓存穿透问题 对空值缓存如果一个查询返回的数据为空不管数据是否存在我们仍然把这个空结果null进行缓存设置空结果的过期时间会很短最长不超过五分钟。 设置可访问的白名单使用bitmaps类型定义一个可以访问的名单名单id作为bitmaps的偏移量每次访问和bitmaps里面的id进行比较如果访问id不在bitmaps里面进行拦截不允许访问 采用布隆过滤器布隆过滤器Bloom Filter是由Howard Bloom在1970年提出的一种比较巧妙的概率型数据结构它可以告诉你某种东西一定不存在或者可能存在。当布隆过滤器说某种东西存在时这种东西可能不存在当布隆过滤器说某种东西不存在时那么这种东西一定不存在。 布隆过滤器相对于Set、Map 等数据结构来说它可以更高效地插入和查询并且占用空间更少它也有缺点就是判断某种东西是否存在时可能会被误判。但是只要参数设置的合理它的精确度也可以控制的相对精确只会有小小的误判概率。 这里重点讲一下布隆过滤器 了解布隆过滤器的用途下面有必须要把它的原理解释一下不然有些读者还会继续蒙在鼓里。 布隆过滤器是一个 bit 向量或者说 bit 数组长这样 向布隆过滤器中添加key时会使用多个hash函数对key进行hash算得一个整数索引值然后对位数组进行取模运算得到一个位置每个hash函数都会算得一个不同的位置。在把位数组的这几个位置都置为1 向布隆过滤器询问key是否存在时也会把hash的几个位置都算出来看看位数组中这几个位置是否都为1只要有一个位为0那么说明布隆过滤器中这个key不存在。如果这几个位置都是1并不能说明这个key就一定存在只是极有可能存在因为这些位被置为1可能是因为其他的key存在所致。如果这个位数组比较稀疏判断正确的概率就会很大如果这个位数组比较拥挤判断正确的概率就会降低。 二、缓存击穿 1.1 什么是缓存击穿 缓存击穿是指缓存中没有但数据库中有的数据一般是缓存时间到期这时由于并发用户特别多同时读缓存没读到数据又同时去数据库去取数据引起数据库压力瞬间增大造成过大压力有点像一把尖刀瞬间击穿到数据库 image-20221126151619669 比如前段时间的吴签事件如果没有把这个词作为热点词存储到缓存中或者缓存时间到期那么用户访问这个词时就会通过缓存直接访问数据库引起数据库压力瞬间增大。 它和缓存穿透的区别在于缓存击穿是指缓存中没有但数据库中有的数据由于并发用户特别多同时读缓存没读到数据同时数据库取数据引起数据库压力瞬间增大造成过大压力。缓存穿透是指缓存和数据库中都没有的数据而用户不断发起请求如发起的数据特别大而不存在的数据 1.2 缓存击穿解决方案 key可能会在某些时间点被高并发访问是一种非常热点的数据这个时候需要考虑一个问题缓存被击穿的问题 下面介绍2种方法可以有效地解决缓存击穿问题 预先设置热门数据在redis高峰访问前把一些热门数据提前存入redis中加大这些热门数据key的时长实时调整 现场监控哪些数据是热门数据实时调整key的过期时长 使用分布式锁: 就是在缓存失效的时候判断拿出来的值为空不是立即去查数据库先使用缓存工具的某些带成功操作返回值的操作。比如redis的setnx去set一个mutex key当操作返回成功时分布式锁在查数据库并回设缓存最后删除mutex key 当操作返回失败证明有线程在查询数据库当前线程睡眠一段时间在重s试整个get缓存的方法 三、缓存雪崩 3.1 什么是缓存雪崩 缓存雪崩是指缓存同一时间大面积的失效所以后面的请求都会落到数据库上造成数据库短时间内承受大量请求而崩掉。 常见缓存雪崩出现原因1、redis服务器挂掉了。2、对缓存数据设置了相同的过期时间导致某时间段内缓存集中失效。 image-20221126161038150 3.2 缓存雪崩解决方案 缓存雪崩解对底层系统的冲击是非常大的 解决方案 构建多级缓存架构nginx缓存redis缓存其他缓存ehcache等 使用锁或队列使用锁或在队列的方式来保证不会有大量的线程对数据库进行读写从而避免失效时大量的并发请求到底层存储系统上不适用高并发情况 设置过期标志更新缓存记录缓存数据是否过期设置提前量如果过期会触发通知另外的线程在后台去更新实际key的缓存 将缓存失效时间分散开设置缓存过期时间时加上一个随机值避免缓存在同一时间过期
http://www.w-s-a.com/news/36712/

相关文章:

  • 做网站一个月可以赚多少钱东营市建设工程招标网
  • 网站开发工具阿里云怎么做网站
  • 用html做静态网站成都专业logo设计公司
  • 哪里有免费建站平台233小游戏网页版在线玩
  • 为什么我的网站做不起来网站能搜索到
  • 方又圆网站建设信息流广告二级代理
  • 公司管理网站首页网站后台编辑框不显示
  • aspnet网站开发模板备案 网站建设方案书
  • 营销软件网站wordpress优秀的破解主题
  • 卧龙区网站建设国内漂亮网站欣赏
  • 服装 网站模板 wordpress石家庄做网站的公司有哪些
  • 惠州技术支持网站建设百度怎样注册免费的网站
  • 无锡哪里有做网站的公司泸州网站建设公司
  • 怎么进行网站推广jsp可以做那些小网站
  • 懒人手机网站wordpress修改秒速
  • WordPress资讯网站用花生壳做网站
  • 关于营销方面的网站建设网站怎么克隆
  • 站长网seo综合查询工具电商公司简介
  • 全能网站建设教程广告制作公司需要什么设备
  • 汽车行业做网站网站改版seo建议
  • 建设职业注册中心网站photoshop属于什么软件
  • 公司网站展示有哪些wordpress工单
  • iis新建网站seo是做什么工作的
  • 临沂网站建设厂家做外贸的女生现状
  • 电子商务网站建设实践临沂做网站的
  • 网站职能建设论文做外贸都有哪些网站
  • 网站建设项目需求分析房地产网站源码
  • 网站充值提现公司账务怎么做中国能建设计公司网站
  • 网站信息资源建设包括哪些网站网站做维护
  • 网站性能优化的方法有哪些建设施工合同网站