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

大连建站软件帮做网站的网站

大连建站软件,帮做网站的网站,php 网站建设流程,许昌网站优化目录 一、Redis 作为缓存 1.1、缓存的基本概念 1.1.1、理解 1.1.2、缓存存什么样的数据#xff1f;二八定律 1.2、如何使用 redis 作为缓存 1.3、缓存更新策略#xff08;redis 内存淘汰机制 / 重点#xff09; 1.3.1、定期生成 1.3.2、实时生成 内存淘汰策略#…目录 一、Redis 作为缓存 1.1、缓存的基本概念 1.1.1、理解 1.1.2、缓存存什么样的数据二八定律 1.2、如何使用 redis 作为缓存 1.3、缓存更新策略redis 内存淘汰机制 / 重点 1.3.1、定期生成 1.3.2、实时生成 内存淘汰策略经典面试 1. FIFO (First In First Out) 先进先出 2. LRU (Least Recently Used) 淘汰最久未使⽤的 3. LFU (Least Frequently Used) 淘汰访问次数最少的 4. Random 随机淘汰 深入理解淘汰策略 redis 中采用的淘汰策略 1.4、缓存使用的注意事项重点 1.4.1、缓存预热Cache preheating 1.4.2、缓存穿透Cache penetration 1.4.3、缓存雪崩Cache avalanche 1.4.4、缓存击穿Cache breakdown 一、Redis 作为缓存 1.1、缓存的基本概念 1.1.1、理解 缓存可以理解为将常用的数据从放到一个访问速度更快的的地方方便更快的随时读取. 也就是说速度快的设备可以作为速度慢的设备的缓存加快读取速度。在计算机硬件中的访问速度如下 CPU 寄存器 内存 硬盘 网络 最常见的就是使用 内存 作为 硬盘 的缓存比如 redis.....   当然 硬盘 也可以作为 网络 的缓存比如浏览器通过 http/https 从服务器上获取数据html、css、js、图片、视频......并进行展示像这样体积大但又不经常改变的数据就可以保存到浏览器本地硬盘上后续在打开这个页面就不必重新从网络获取上述数据了. 1.1.2、缓存存什么样的数据二八定律 缓存速度虽然快但是空间小因此大部分情况缓存只存放一些热点数据就非常有用了. 这里就不得不提一下二八定律了就是说缓存 只需要存储 20% 的热点数据就可以应对 80% 的请求. 1.2、如何使用 redis 作为缓存 我们通常使用 redis 作为 数据库mysql的缓存. 这是由于数据库是非常重要的组件但是速度又很慢一旦短时间内有大量请求来临就有可能使数据库压力过大导致宕机. 为什么会压力过大导致宕机 服务器每次处理一个请求都要消耗一些硬件资源cpu、内存、硬盘、网络......任何一种资源的消耗超出了机器提供的上限就很容易出现故障了. 如何提高 mysql 能承担的并发量 1. 开源引入更多的机器构成数据库集群例如 主从复制即使主节点宕机也可以通过提升从节点为主节点来解决、分库分表..... 2. 节流引入缓存就是典型的方案. 把一些频繁的读取的热点数据保存到缓存上后续再查询数据的时候如果缓存已经存在了就直接把从缓存上读到的数据返回也就不在访问 mysql 了. 1.3、缓存更新策略redis 内存淘汰机制 / 重点 实际的工作中如何知道 redis 中应该存储哪些数据如何知道哪些数据使热点数据 这就得看你使用缓存的哪种更新策略了~ 1.3.1、定期生成 每隔⼀定的周期 (比如⼀天/⼀周/⼀个⽉) , 对于访问的数据频次进⾏统计并以日志的形式记录下来最后挑选出访问频次最⾼的前 N% 的数据放到缓存中. 例如搜索引擎. 搜索引擎的 “查询词” 就是要关注的 “访问的数据”通过日志把每天也可以按一周、一月都使用到了哪些词给记录下来就可以针对这些日志进行统计这里的统计数据量非常大需要写个程序来统计数量大到可能需要使用分布式系统来存储日志 HDFS统计这一天中每个词出现的频率再根据频率降序排序提取出 前 20% 的词就可以认为这些词是 “热点词” . 接下来就可以把这些热点词以及涉及到的搜索结构都提前拎出来放到类似 “ redis” 这样的缓存中了。 如何定期统计呢 可以写一套离线流程往往使用 shellpython 写脚本代码然后通过 定时任务 来触发一天更新一次、一个月更新一次......具体的 a完成统计热词的过程. b根据热词找到搜索结果的数据. c把得到缓存数据同步到缓存服务器上. d控制这些缓存服务器自动重启. 定期生成的优缺点 优点实现起来比较简单过程可控缓存中有什么东西是比较固定的方便排查问题. 缺点实时性不够如果出现一些突发性的事件出现了一些新的热点词新的热词就可能对数据库带来较大的压力缓存中查询没有直接打到数据库例如过年的前几天“春节晚会” 这个词就会变的特别高频、或者是某个突发的新闻...... 1.3.2、实时生成 先给缓存设定容量上限可以通过 Redis 配置⽂件的 maxmemory 参数设定. 接着之后用户每次查询 如果在 Redis 中查到了就直接返回.如果 Redis 中没有就从数据库查询在把查到的结果写入 Redis. 经过一段时间的 “动态平衡” redis 中的 key 就逐渐变成了 热点数据. 但是这样不停的写redis 中的数据就会越来越多达到 redis 配置的容量上限之后怎么办 内存淘汰策略经典面试 为了解决上述问题就可以使用以下四种 “内存淘汰策略” 以下淘汰策略不局限于 redis 1. FIFO (First In First Out) 先进先出 把缓存中存在时间最久的 (也就是先来的数据) 淘汰掉. 2. LRU (Least Recently Used) 淘汰最久未使⽤的 记录每个 key 的最近访问时间. 把最近访问时间最⽼的 key 淘汰掉. 3. LFU (Least Frequently Used) 淘汰访问次数最少的 记录每个 key 最近⼀段时间的访问次数. 把访问次数最少的淘汰掉 4. Random 随机淘汰 从所有的 key 中抽取幸运儿被随机淘汰掉 深入理解淘汰策略 假如在 甄嬛传 中你是那个皇上后宫佳丽三千但实际上你能宠幸的妃子也就那么几个精力有限相当于热点数据. 今天选秀一批新的小主而你看上了其中的一个那么就意味着后宫必有人失宠那么到底要冷落谁呢 FIFO皇后最老先冷落了. LRU找个太监统计最近的宠幸时间比如皇后(10天前)、华妃一个月前、熹妃一天前那么华妃失宠. LFU找个太监统计最近的宠幸次数比如皇后6次、华妃1次、熹妃10次那么华妃失宠. Random随机冷落一个妃子. redis 中采用的淘汰策略 volatile-ttl相当于 FIFO, 只不过是局限于过期的 key 在设置了过期时间的key中根据过期时间进行淘汰越早过期的优先被淘汰. volatile-lru就是 LRU只不过局限于过期的 key 当内存不足以容纳新写⼊数据时从设置了过期时间的key中使⽤LRU最近最少使用算法进行淘汰.allkeys-lru就是 LRU针对所有 key 当内存不⾜以容纳新写⼊数据时从所有key中使⽤LRU最近最少使用算法进行淘汰volatile-lfu就是 LFU只不过局限于过期的 key 4.0版本新增当内存不⾜以容纳新写⼊数据时在过期的key中使⽤LFU算法 进行删除key.allkeys-lfu就是 LFU针对所有 key 4.0版本新增当内存不⾜以容纳新写⼊数据时从所有key中使⽤LFU算法进行淘汰.volatile-random 当内存不⾜以容纳新写⼊数据时从设置了过期时间的key中随机淘汰数据.allkeys-random 当内存不⾜以容纳新写⼊数据时从所有key中随机淘汰数据.noeviction 默认策略当内存不⾜以容纳新写⼊数据时新写⼊操作会报错. 1.4、缓存使用的注意事项重点 1.4.1、缓存预热Cache preheating 这里主要针对缓存更新策略是 实时生成的定期生成 不涉及 “预热” . 为什么要预热 redis 服务器首次接入之后服务器是没有数据的此时所有请求都会直接打给 mysql在 redis 上没查到而在 mysql 上查到的数据会继续写入 redis随着时间推移redis 上的数据越积累越多 mysql 承担的压力才逐渐变小 . 那么没预热前mysql 的压力是相当大的. 如何解决上述问题 通过缓存预热就可以解决. 主要就是把缓存 定期生成 和 实时生成 结合一下. 具体的先通过离线的方式通过一些统计途径统计一些热点数据导入到 redis 中此时导入的这批热点数据就能帮 mysql 承担很大压力了. 随着时间的推移逐渐就使用新的热点数据淘汰旧数据了. 1.4.2、缓存穿透Cache penetration 查询某个 key 在 redis 中没有mysql 中也没有这个 key 也就不会更新到 redis 中。 这就导致这次查询没有下次查还是没有....... 如果这样的数据很多并且反复查询一样会给 mysql 带来很大压力. 如何处理 首先是一种亡羊补牢的方式通过改进业务/加强监控警报但这都是出现事故才采取的行为. 更靠谱的方案降低问题的严重性 1. 如果这个 key 在 redis 和 mysql 上都不存在仍然把这个 key 写入 redisvalue 设置成一个非法值比如 . 2. 引入布隆过滤器. 每次查询 redis / mysql 之前都先判定一下 key 是否在 布隆过滤器 上存在布隆过滤器本质上是结合 hash bitmap 实现的以比较小的空间开销和比较快的速度针对 key 是否存在进行判定不存在就没必要查了. 1.4.3、缓存雪崩Cache avalanche 在短时间内redis 中大规模的 key 失效导致缓存命中率陡然下降并且 mysql 的压力迅速上升甚至直接宕机. redis 上为什么会出现 大规模的 key 失效 1. redis 直接挂了比如 redis 宕机或者 redis 集群模式下大量节点宕机. 2. redis 好着呢但是可能之前短时间内设置了很多相同过期时间的 key. 如何处理 1) 加强监控警报例如采取集群的监控或者哨兵监控的方式加强 redis 集群可用性. 2不给 key 设置过期时间或者设置过期时间的时候添加一些随机因子来避免同时过期. 1.4.4、缓存击穿Cache breakdown 这里翻译成 “击穿” 实际上不太合适以至于一些面试官也分不清击穿和穿透这种情况最好两种都说明一下. 这里更适合的翻译成 “瘫痪”. 缓存击穿 相当于 雪崩 的特殊情况. 针对热点 key如果过期了导致大量请求直接访问到数据库上甚至引起数据库宕机. 如何处理 1. 基于统计的方式发现热点 key设置为永不过期. 这种方式往往需要服务器结构做出比较大的调整. 2. 进行必要的服务降级例如服务器的功能本来有 10 个特定情况下会关闭一些不重要的功能只保留核心功能.  类似于手机的省电模式例如访问数据库的时候使用分布式锁限制数据库的访问频率.
http://www.hkea.cn/news/14508510/

相关文章:

  • 合肥高端网站建设网站开发的搭建框架是什么意思
  • 做国外进口衣服的网站做网站是什么会计科目
  • dede一键更新网站佛山网站建设收费标准
  • 嘉兴网站制作星讯网络科技河津市城乡建设局网站
  • 网站如何添加百度统计深圳网站建设黄浦网络-技术差
  • 网站图片不是本站的对seo有什么不好网站 欣赏
  • 建站之星服务器网站地址ip域名查询
  • 网站买了服务器后该怎么做seo常用工具包括
  • 建设一个网站要多少费用建设本地网站 配置iis
  • 网店运营推广高级实训教程山东济南网站制作优化
  • 黑客攻击的网站建设银行租房网站首页
  • 企业网站备案名称要求WordPress怎么改文章颜色
  • 东莞外贸网站制作网站的总体结构
  • php 读取网站文件河南免费网站建设公司推荐
  • 学校网站logo怎么做建设银行上海黄浦支行网站
  • 五个常见的电子商务网站网络营销平台的类型
  • 网站开发的架构公司网上注册流程
  • 德尔普网站建设北京软件培训机构前十名
  • 佛山网站搭建费用万户网站制作
  • 西安推荐企业网站制作平台网站建设培训哪家好
  • 作文网站投稿商场设计网站
  • 杭州企业建站模板搜公司名到公司的网站
  • 网站开发服务合同印花税wordpress视频上传不
  • 什么是网站架构建设网站的目的和内容
  • 移动端网站建设服务商WordPress在服务器什么位置
  • 南宁月嫂网站建设网站建设的维护工作有哪些
  • 平定住房建设局网站百度采购网官方网站
  • 静安区网站建设邯郸做商城网站的公司
  • 十里堡网站建设如何给网站弄ftp
  • 网站建设推广注意什么另类投资公司网站建设规定