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

门户网站建设工作情况汇报seo技术教程博客

门户网站建设工作情况汇报,seo技术教程博客,做直播网站的上市公司,网站建设平台讯息Redis常见问题总结#xff1a; Redis常见问题总结Redis缓存预热Redis缓存雪崩Redis缓存击穿Redis缓存穿透 Redis 中 key 的过期删除策略数据删除策略 Redis内存淘汰策略一、Redis对过期数据的处理#xff08;一#xff09;相关配置#xff08;二#xff09;内存淘汰流程 Redis常见问题总结Redis缓存预热Redis缓存雪崩Redis缓存击穿Redis缓存穿透 Redis 中 key 的过期删除策略数据删除策略 Redis内存淘汰策略一、Redis对过期数据的处理一相关配置二内存淘汰流程三动态改配置命令 二、内存淘汰策略的种类及特点一Redis 4.0以前的策略二Redis 4.0以后增加的策略 三、常见的淘汰算法一FIFO算法先进先出二LRU算法最近最少使用三LFU算法最不常使用四LRU和LFU的选择 总结 Redis常见问题总结 Redis缓存预热 “宕机”服务器启动后迅速宕机指的是服务刚上线由于Redis中没有任何数据导致大量请求访问数据库主从之间数据吞吐量较大数据同步操作频度较高。 而缓存预热解决的就是在系统启动前提前将相关的数据直接加载到缓存系统。避免用户在请求的时候先查询数据库再将数据库的查询到的数据缓存到Redis的问题。用户可以直接查询事先被预热的缓存数据。 解决方案 准备工作 日常例行统计数据访问记录统计访问频度较高的热点数据。将统计结果中的数据分类根据级别Redis优先加载级别较高的热点数据 实施 使用脚本程序固定触发数据预热过程如果条件允许使用CDN内容分发网络效果会更好 Redis缓存雪崩 缓存雪崩是指在同一时段大量的缓存key同时失效或者Redis服务宕机导致大量请求到达数据库带来巨大压力。【这里指的是同一批key的过期时间相同或者Redis服务挂掉】 解决方案 给不同的Key的TTL添加随机值 利用Redis集群提高服务的可用性 给缓存业务添加降级限流策略 给业务添加多级缓存 Redis缓存击穿 缓存击穿问题也叫热点Key问题就是一个被高并发访问并且缓存重建业务较复杂的key突然失效了无数的请求访问会在瞬间给数据库带来巨大的冲击 常见的解决方案有两种 互斥锁 逻辑过期 互斥锁 逻辑过期 Redis缓存穿透 缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在这样缓存永远不会生效这些请求都会打到数据库 常见两种解决方案 缓存空对象布隆过滤器 Redis 中 key 的过期删除策略 数据删除策略 什么是过期数据 Redis是一种内存级数据库所有数据均存放在内存中内存中的数据可以通过TTL指令获取其状态 XX 具有时效性的数据-1 永久有效的数据-2 已经过期的数据或被删除的数据或未定义的数据 注意过期的数据真的删除了吗不是的 删除策略比对 1. 定时删除 节约内存无占用 不分时段占用CPU资源频度高拿时间换空间 2. 惰性删除 内存占用严重延时执行CPU利用率高拿空间换时间 3. 定期删除 内存定期随机清理每秒花费固定的CPU资源维护内存随机抽查重点抽查 Redis的过期键的删除策略是指当Redis中的缓存的key过期了Redis要如何处理。 Redis中提供了三种删除策略 1.定时删除 当放入数据后设置一个定时器当定时器读秒完毕后将对应的数据从dict中删除。 优点 内存友好数据一旦过期就会被删除 缺点 CPU不友好定时器耗费CPU资源并且频繁的执行清理操作也会耗费CPU资源。用时间换空间 2.惰性删除 当数据过期的时候不做任何操作。当访问数据的时候查看数据是否过期如果过期返回null并且将数据从内存中清除。如果没过期就直接返回数据。 优点 CPU友好数据等到过期并且被访问的时候才会删除。 缺点 内存不友好会占用大量内存。用空间换时间 3.定期删除 定期删除是定时删除和惰性删除的折中方案。每隔一段时间对redisServer中的所有redisDb的expires依次进行随机抽取检查。 Redis中有一个server.hz定义了每秒钟执行定期删除的次数每次执行的时间为250ms/server.hz。Redis中会维护一个current_db变量来标志当前检查的数据库。current_db当超过数据库的数量的时候会重新从0开始。 定期检查就是执行一个循环循环中的每轮操作会从current_db对应的数据库中随机依次取出w个key查看其是否过期。如果过期就将其删除 并且记录删除的key的个数。如果过期的key个数大于w25%就会继续检查当前数据库当过期的key小于w25%会继续检查下一个数据库。当执行时间超过规定的最大执行时间的时候会退出检查。一次检查中可以检查多个数据库但是最多检查数量是redisServer中的数据库个数也就是最多只能从当前位置检查一圈。 Redis内存淘汰策略 一、Redis对过期数据的处理 Redis的内存淘汰机制主要是用于在Redis用于缓存的内存不足时处理需要新写入且需申请额外空间的数据。 一相关配置 在redis.conf中 配置maxmemory bytes用于设置Redis的最大内存空间。若不设定该参数默认无限制通常会设定为物理内存的四分之三。配置maxmemory-policy noeviction用于设置淘汰策略默认为noeviction。 二内存淘汰流程 客户端发起需要申请更多内存的命令如set。Redis检查内存使用情况若已使用内存大于maxmemory则根据用户配置的不同淘汰策略来淘汰内存key以换取一定的内存。若上述步骤均无问题则该命令执行成功。 三动态改配置命令 Redis支持动态改配置无需重启。 设置最大内存config set maxmemory 100000设置淘汰策略config set maxmemory-policy noeviction 二、内存淘汰策略的种类及特点 一Redis 4.0以前的策略 noeviction当内存使用超过配置时会返回错误不会驱逐任何键。默认选项一般不选用allkeys-lru当内存不足以容纳新写入数据时在整个键空间中移除最近最少使用的key。最常用volatile-lru当内存不足以容纳新写入数据时在设置了过期时间的键空间中移除最近最少使用的key。allkeys-random当内存不足以容纳新写入数据时在整个键空间中随机移除某个key。volatile-random当内存不足以容纳新写入数据时在设置了过期时间的键空间中随机移除某个key。volatile-ttl当内存不足以容纳新写入数据时在设置了过期时间的键空间中有更早过期时间的key优先移除。 二Redis 4.0以后增加的策略 volatile-lfu从所有配置了过期时间的键中驱逐使用频率最少的键。allkeys-lfu从所有键中驱逐使用频率最少的键。 内存淘汰策略可通过配置文件修改redis.conf对应的配置项是maxmemory-policy修改对应的值即可。 三、常见的淘汰算法 一FIFO算法先进先出 思想 基于队列的先进先出原则最先进入的数据会被最先淘汰掉是最简单、最公平的思想。 实现 维护一个FIFO队列按照时间顺序将各数据已分配页面链接起来组成队列并将置换指针指向队列的队首。进行置换时把置换指针所指的数据页面顺次换出并把新加入的数据插到队尾即可。 缺点 会导致缺页率增加。随着分配页面的增加被置换的内存页面往往是被频繁访问的因此FIFO算法会使一些页面频繁地被替换和重新申请内存从而导致缺页率增加。由于缺页率会随着分配页面的增加而增加使得redis的开销也逐渐增加所以这种算法已不再使用。 二LRU算法最近最少使用 思想 最近最少使用的会被优先淘汰。如果一个数据在最近一段时间没有被访问到那么在将来它被访问的可能性也很小。当空间满时最久没有访问的数据最先被淘汰掉。 实现 用双向链表LinkedList哈希表HashMap实现链表用来表示位置哈希表用来存储和查找在Java里有对应的数据结构LinkedHashMap。 缺点 在需要淘汰时只是随机选取有限的key进行对比排除掉访问时间最久的元素不能选择整个候选元素的最优解只是局部最优。默认随机选取的key的数目为5在配置文件redis.conf中由maxmemory_samples属性的值决定采样数量越大越接近于标准LRU算法但也会带来性能的消耗。在Redis 3.0以后增加了LRU淘汰池进一步提高了与标准LRU算法效果的相似度。淘汰池即维护的一个数组数组大小等于抽样数量maxmemory_samples在每一次淘汰时新随机抽取的key和淘汰池中的key进行合并然后淘汰掉最旧的key将剩余较旧的前面5个key放入淘汰池中待下一次循环使用。假如maxmemory_samples 5随机抽取5个元素淘汰池中还有5个元素相当于变相的maxmemory_samples 10所以进一步提高了与LRU算法的相似度。 三LFU算法最不常使用 思想 如果一个数据在最近一段时间很少被访问到那么在将来它被访问的可能性也很小。当空间满时最小频率访问的数据最先被淘汰。 实现及问题解决 为每个key维护一个计数器每次key被访问时计数器增大计数器越大则认为访问越频繁。但存在以下问题 可能存在某个key在开始一个小时内有100万的访问量但之后一小时内访问量为0而在第二个小时内另一个key的访问量达到20万此时第二个小时内key1会优先于key2被淘汰尽管key2在该小时内访问量更大。当新加入的key由于没有被访问过初始计数器为0若此时触发淘汰机制会把最先添加的key最先淘汰掉。 解决方案在LFU算法中维护了一个24bit的字段被分成16 bits与8 bits两部分。第一部分高16 bits用来记录计数器的上次缩减时间时间戳单位精确到分钟。第二部分低8 bits用来记录计数器的当前数值该数值反映访问频率而非次数。在redis.conf配置文件中lfu-log-factor用来调整计数器counter的增长速度lfu-log-factor越大counter增长越慢。lfu-decay-time是一个以分钟为单位的数值用来调整counter的缩减速度。 四LRU和LFU的选择 需要根据业务权衡到底是选择淘汰最近最少使用LRU还是选择最不经常使用LFU。总的来说无论是LRU、LFU、TTL还是Random都是近似算法来实现的在可靠性和性能上做了一定的平衡。在业务中应主动删除没有价值的数据或者更新某些key的过期时间等来提高Redis的性能和空间不能过分依赖于淘汰策略。 此处可根据需要插入相关图片例如LRU和LFU算法的示意图等假设插入了一张LRU算法的示意图如下所示 总结 Redis的内存淘汰策略的选取并不会影响过期的key的处理。内存淘汰策略用于处理内存不足时需要申请额外空间的数据过期策略用于处理过期的缓存数据。要根据实际业务场景和需求合理选择内存淘汰策略并结合主动的数据管理操作来优化Redis的性能和内存使用。
http://www.dnsts.com.cn/news/103016.html

相关文章:

  • 山西手机响应式网站建设创业网站模板免费下载
  • 常德市 网站建设潍坊网站建设哪家好
  • 乐都企业网站建设公司什么网站是做电机控制的
  • 在线网站开发重庆seo网络营销
  • 成都网站建设团队聚名网名
  • 什么网站做h5没有广告网络公司网站建设彩铃样本
  • 上海工商网站查询企业信息深圳app制作公司
  • 专业的开发网站建设网站维护需要做那些事
  • 自建网站步骤做网站的需求分析
  • 要建设一个网站需要准备些什么请人做网站收费
  • 计算机网站建设论文.用路由器做网站
  • 不锈钢网站样板网站建设与管理的过程
  • 室内设计经典案例seo搜索引擎优化5
  • 企业网站 html5长沙装修公司招聘信息
  • 制作网站要找什么公司做网站商城需要什么
  • 外国人学做中国菜 网站厦门十大软件公司
  • 郴州高端网站建设WordPress底部添加音乐
  • 怎样在百度上做推广网站门户网站建设投标书
  • 怎样做淘宝客网站网站被k是怎么回事
  • 专门做网站搜索优化的公司南昌网站优化方案
  • 南山区住房与建设局官方网站wordpress文章编译器修改
  • 企业网站可以自己做深圳市专业的做网站
  • 招标网站免费中国城乡建设网
  • 网站验收指标网站视频链接
  • asp网站改php网站方法wordpress修改密码
  • 网站页面在线设计河北秦皇岛黄金海岸
  • wiki网站开发工具好的网站设计培训班
  • 中山优化网站重庆交通建设集团有限公司网站
  • 免费程序网站图片无法显示wordpress
  • 网站备案域名还是空间龙华网站建设的公司