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

电子商务网站建设基础步骤网站开发周期价格

电子商务网站建设基础步骤,网站开发周期价格,查找网站备案信息,500页面 wordpress目录 前言 一、缓存基本概念 1.概念 2.二八定律 二、使用 Redis 作为缓存 三、缓存的更新策略 1.定期生成 2.实时生成 四、Redis 内存淘汰机制 1.通用淘汰策略 #xff08;1#xff09;FIFO #xff08;2#xff09;LRU #xff08;3#xff09;LFU #… 目录 ·前言 一、缓存基本概念 1.概念 2.二八定律 二、使用 Redis 作为缓存 三、缓存的更新策略 1.定期生成 2.实时生成 四、Redis 内存淘汰机制 1.通用淘汰策略 1FIFO 2LRU 3LFU 4Random 2.Redis 内置的淘汰策略 1volatile-lru 2allkeys-lru 3volatile-lfu 4allkeys-lfu 5volatile-random 6allkeys-random 7volatile-ttl 8noeviction 五、缓存使用的注意事项 1.缓存预热Cache preheating 2.缓存穿透Cache penetration 3.缓存雪崩Cache avalanche 4.缓存击穿Cache breakdown ·结尾 ·前言 我们都知道 Redis 的主要用途有三个方面存储数据、作为缓存和消息队列其中Redis 最常用的场景就是作为缓存了本篇文章就来和大家介绍一下缓存的基本概念如何使用 Redis 作为缓存缓存的更新策略有哪些Redis 中的内存淘汰机制是怎样的还有关于使用缓存的一些注意事项那么就开始本篇文章的正题吧。 一、缓存基本概念 1.概念 相信大家都有过坐火车的经历在我们坐火车时会带着一个拉杆箱这个拉杆箱可以装很多很多的东西如果我们把所有东西都放在了拉杆箱中就会遇见一个问题在我们进入火车站时需要刷身份证进站由于你把所有东西都放在了拉杆箱中此时你就需要把拉杆箱放倒在地上打开拉杆箱翻找身份证刷身份证进站再把身份证放回拉杆箱这一系列的繁琐过程结束后才算是用身份证进入了车站但是在后面需要刷身份证检票时、刷身份证出站时在火车上列车员需要用身份证检验时你都要重复上述取身份证的过程这种方式就十分低效了那么怎么做可以更高效呢我想大家都是知道的就是把身份证、手机之类经常需要使用的都放在衣服兜中这样使用起来就会更加方便高效。 看完上面的例子其实我们说的缓存做的事情就类似于我们衣服兜起到的效果缓存是计算机中的一个经典概念其核心思路就是把一些常用的数据放到触手可及的地方方便随时读取在我们的计算机上各个硬件读取速度快慢有以下的顺序 CPU 寄存器  内存  硬盘  网络 速度快的设备可以作为速度慢的设备的缓存那么我们就可以使用内存来作为硬盘的缓存这也是 Redis 主要的用途还可以使用硬盘来作为网络的缓存比如浏览器中的缓存。 2.二八定律 既然缓存读取速度更快那为什么不都用缓存来存储数据呢这是因为缓存的内存空间往往是不足的所以大部分情况下缓存只是放一些热点数据访问频繁的数据缓存存在的意义一是因为它读取速度快二就是因为“二八定律”。 二八定律的意思是我们 20% 的热点数据能够应付 80% 的访问场景所以我们只需要把这少量的热点数据放到缓存中就可以应对大多数的场景从而在整体上有明显的性能提升。 二、使用 Redis 作为缓存 在我们实际应用中通常会使用 Redis 作为 Mysql 的缓存虽然关系型数据库Mysql的功能强大但是它有着一个很大的缺陷就是性能不高为什么性能不高大致有以下几点原因关系型数据库就以 MySql 为例 MySql 把数据存储在硬盘上硬盘上的 IO 速度并不快尤其是在随机访问时使用 MySql 进行查询过程中如果查询不能命中索引就需要进行表的遍历这会大大的增加硬盘 IO 的次数MySql 对于 SQL 在执行会做一系列的解析、校验、优化的工作如果使用 MySql 做一些复杂查询比如多表联合查询需要使用笛卡尔积进行操作效率会降低很多。 因为 MySql 等数据库有着上面的问题所以承担的并发量就有限一旦请求的数量多了数据库的压力就会很大就可能会宕机那么如何提高 MySql 能承担的并发量呢有以下两种方案可以做到 开源引入更多的机器构成数据库集群节流引入缓存把一些频繁读取的热点数据保存到缓存中这样后续在查询数据的时候先在缓存中查询如果缓存中已经存在就不再访问 MySql 了。 Redis 就是作为数据库缓存的常见方案关于 Redis 可以作为 Mysql 缓存有以下两种原因 Redis 数据在内存中访问内存速度比访问硬盘快很多Redis 只是支持简单的 key-value 存储不涉及复杂的查询的诸多限制规则。 此时当 Redis 作为 MySql 的缓存后他们的关系可以形象的如下图所示 Redis 就像盾牌一样会先接收大部分的请求少部分 Redis 上没有的数据才会请求 MySql。 注意只有在进行读操作时使用 Redis 作为缓存才有作用如果进行的是写操作那还是要对 MySql进行操作的 三、缓存的更新策略 通过上面的介绍我们知道引入缓存的意义是用来存一些热点数据并配合二八定律可以很好的分担 Mysql 的压力可是什么数据是“热点数据”呢对于存储的热点数据就有以下两种生成方式下面来展开介绍一下这两种方式。 1.定期生成 定期生成这种策略就是每隔一定的周期比如一天/一周/一个月对访问数据的频次进行统计挑选出访问频次最高的前 N%来存储在缓存中。 使用这种策略的优缺点如下 优点定期生成的策略实现起来比较简单过程可控方便排查问题缺点实时性不够如果出现一些突发事件有一些本来不是热词的内容突然成为了热词新的热词就可能就数据库带来较大的压力。 关于上述缺点中的实时性有一个很好的例子那就是在过年时搜索“春节晚会”的时候这个词一般只会在过年期间会被人们进行搜索并且搜索量巨大此时由于定期生成周期还没有进行更新就会造成这些搜索请求直接访问后面的数据库了。  2.实时生成 为了弥补上述定期生成策略的缺点实时生成会采用动态生成热点数据的方式我们首先需要给缓存设定容量上限在 Redis 配置文件中的 maxmemory 参数可以设定容量上限接下来用户的每次查询操作就会经历以下的步骤 如果在 Redis 中查找到就直接返回如果 Redis 中不存在就从数据库中查把查到的结果同时也写入到 Redis中。 此时经过一段时间的“动态平衡”Redis 中的数据就都成了热点数据了但是同时也有一个问题就是这样不停的往 Redis 中写数据会导致 Redis 中的内存占用越来越多逐渐达到内存的上限这就出现不能继续存数据了的问题那么针对这种问题Redis 中有着内存淘汰这样的机制。 四、Redis 内存淘汰机制 为了解决实时生成策略引发内存满如何继续存储数据的问题Redis 就引入了“内存淘汰”这样的机制在介绍 Redis 的淘汰机制之前先来介绍一些通用的淘汰策略。 1.通用淘汰策略 1FIFO FIFO 的英文全称是 First In First Out 意思是先进先出这种策略是把缓存中存在时间最久的也就是最先来的数据淘汰掉然后添加新的数据。 2LRU LRU 的英文全称是 Least Recently Used 意思是淘汰最近未使用的此时在缓存中记录每个数据最近访问的时间把最近访问时间最老的数据淘汰掉然后添加新的数据。 3LFU LFU 的英文全称是 Least Frequently Used 意思是淘汰访问次数最少的此时在缓存中记录每条数据最近一段时间的访问次数把访问次数最少的数据淘汰掉然后添加新的数据。 4Random Random 是随机淘汰的意思这种策略会在缓存中所有的数据中随机抽取幸运儿来淘汰掉然后再添加新的数据。 2.Redis 内置的淘汰策略 1volatile-lru 这种策略是当内存不足以容纳新写入的数据时从设置了过期时间中的 key 中使用 LRU 最近最少使用算法进行淘汰。 2allkeys-lru 这种策略是当内存不足以容纳新写入的数据时从所有 key 中使用 LRU最近最少使用算法进行淘汰。 3volatile-lfu 这种策略是在 Redis 4.0 版本新增的当内存不足以容纳新写的数据时在过期的 key 中使用 LFU访问次数最少算法进行淘汰。 4allkeys-lfu 这种策略是 Redis 4.0 版本新增的当内存不足以容纳新写的数据时从所有 key 中使用 LFU访问次数最少算法进行淘汰。 5volatile-random 这种策略是当内存不足以容纳新写入的数据时从设置了过期时间的 key 中随机淘汰数据。 6allkeys-random 这种策略是当内存不足以容纳新写入的数据时从所有的 key 中随机淘汰数据。 7volatile-ttl 这种策略是在设置了过期时间的 key 中根据过期时间进行淘汰越早过期的优先被淘汰相当于 FIFO 算法只不过是局限于设置过期时间的 key 8noeviction 这种策略是 Redis 默认策略当内存不足以容纳新写入的数据时新写入数据就会报错。 通过上述 Redis 中内置的淘汰策略的介绍可以看出Redis 默认策略不适合于实时更新缓存以上的在 Redis 中有一个配置项就可以设置 Redis 采取上述那种策略淘汰内存数据。至于采取哪种策略更好就需要具体问题具体分析了。 五、缓存使用的注意事项 1.缓存预热Cache preheating 当我们是首次将 Redis 服务器接入整个系统来作为缓存时Redis 服务器中是没有数据的此时如果我们的缓存更新策略是采用定期生成的方式就不会涉及缓存预热但是如果我们使用的是实时生成就会出现以下问题 由于 Redis 服务器是首次接入其内部没有数据此时按照实时生成策略客户端会先查询 Redis如果没有查到就会再查一次 Mysql查到之后再把数据写入到 Redis 中在这个过程中所有的请求就会都打给 MySql此时的请求如果过多就会给 MySql 造成很大的压力。 缓存预热就是用来解决上述问题的它的解决方式就是将定期生成与实时生成的两种策略进行结合先在 Redis 服务器没有上线的时候通过统计将热点数据找到一批然后导入 Redis 中此时导入的这批热点数据就可以帮 MySql 承担很大的压力随着时间推移Redis 中就逐渐使用新的热点数据淘汰掉旧的热点数据了。  2.缓存穿透Cache penetration 缓存穿透就是在查询某个 key 时这个 key 在 Redis 中没有MySql 中也没有此时由于 MySql 中也没有这个 key 这条 key 就不会被更新到 Redis 中但是如果出现很多这样的数据被查询并且反复查询请求就会全都打给 Mysql 此时就会给 MySql 带来很大的压力。出现这种问题的原因有以下几条 代码设计不合理比如缺少必要的参数校验环节导致非法的 key 也被进行查询了在开发过程中不小心把部分数据从数据库中误删了遭到黑客的恶意攻击。 那么如何解决缓存穿透这样的问题呢有以下几个解决方案 针对要查询的参数进行严格的合法性校验针对 Redis 和 Mysql 中都不存在的 key 仍写入到 Redis 中将这里的 value 也设成一个非法值比如“”引入 布隆过滤器在每次查询 Redis/MySql 之前都先判定一下 key 是否在 布隆过滤器 上存在把所有 key 都插入到 布隆过滤器 中。 上述解决方法中的 布隆过滤器 是一种本质上结合了 hash 与 bitmap 的数据结构它可以以比较小的空间开销比较快的时间速度来实现针对 key 是否存在做出判定。  3.缓存雪崩Cache avalanche 缓存雪崩就是指在短时间内Redis 上大规模的 key 失效导致缓存命中率陡然下降并且 MySql 的压力迅速上升导致 MySql 直接宕机。出现这个问题的原因有主要两种 Redis 服务器宕机 / Redis 集群模式下大量的节点宕机Redis 没有问题但是由于之前短时间内设置的很多 key 它们的过期时间是相同的。 那么如何解决这种问题呢 有以下几种解决方案 增加并完善报警体系争取在第一时间发现 Redis 服务器宕机部署高可用的 Redis 集群不给 key 设置过期时间 / 设置过期时间的时候添加随机的因子避免同一时刻过期。 4.缓存击穿Cache breakdown 缓存击穿可以看作缓存雪崩的特殊情况是指热点 key 突然过期了导致大量的请求直接访问到 MySql 中使 MySql 服务器压力骤增甚至宕机。 解决这种问题的方式有以下几种 基于统计的方式发现热点 key 并且设置永不过期进行必要的服务降级例如访问 Mysql 的时候使用分布式锁限制同时请求 MySql 的并发数。 ·结尾 文章到此就要结束了关于 Redis 作为缓存的意义更新缓存中实时生成时需要用到的淘汰策略以及在使用 Redis 作为缓存时需要注意的一些事项介绍的也差不多了本篇文章以文字为主希望大家可以很好的理解其中的内容如果本篇文章对你有所帮助还是希望能得到你的三连支持咯~~如果对文章内容有什么问题欢迎在评论区进行留言讨论我们下一篇文章再见~~~
http://www.hkea.cn/news/14471181/

相关文章:

  • 网站建设带主机wordpress的商城网站制作公司
  • 网站要实现的电商功能维护网站建设
  • 莱芜益寿堂网站金湖建设工程质量监督网站
  • 佛山品牌网站建设报价wordpress插件恢复图片
  • 菏泽手机网站建设百度网盘网站开发文档模板
  • 厦门企业网站seo霸屏网站开发
  • 网站模糊设计深圳网站设计工作室
  • 建设银行观澜支行网站天津建设监理协会网站
  • 怎么做网站步骤免费的广告学
  • 佛山网站推广建设做网站用小图标在什么网下载
  • 怎样做百度网站辽阳网站网站建设
  • 模板网站建设流程《设计》在线观看
  • 襄阳网站建设feeyr怎么建设手机网站首页
  • 云一网站设计wordpress标签内链插件
  • 用自己的照片做头像的网站网络规划设计师改版时间
  • 怎么创建网站后台万能转账生成器app
  • 南昌建设工程质量监督网站网站费用单
  • 国内网站没备案建设网站备案不通过怎么办
  • 建设网站外包公司it培训班学出来有用吗
  • 网站建设面试自我介绍.net做网站
  • 青岛网站开发公司电话wordpress说说
  • 给别人做网站怎么赚钱吗中企动力 做网站 怎么样
  • 建站平台与自己做网站网站怎么做页游
  • 网站架构文案加拿大广播公司
  • 网站建设的成果怎么写海口建设网站的公司
  • 房产中介如何做网站黄冈网站建设策划
  • 机加工外协网站百度竞价有点击无转化
  • 简洁物流网站模板免费下载wordpress收不到
  • 饰品电子商务网站的建设网站的外链
  • 百度推广 做网站长春 美容 网站建设