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

云南集优科技网站百度网站如何优化排名

云南集优科技网站,百度网站如何优化排名,wordpress调用指定的字段,新网站怎么做推广前言 这是关于 Redis 全景图的最后一篇文章。因为一次写太多会限流,我也是没办法,才分成三篇文章来写。这篇文章是关于 Redis 应用于缓存的。 其实为什么要讲这个话题呢? Redis 应用在很多地方呀,为什么一定要挑着这个话题来讲呢…

前言

这是关于 Redis 全景图的最后一篇文章。因为一次写太多会限流,我也是没办法,才分成三篇文章来写。这篇文章是关于 Redis 应用于缓存的。

其实为什么要讲这个话题呢? Redis 应用在很多地方呀,为什么一定要挑着这个话题来讲呢?我刚开始接触 Redis 的时候,对 Redis 的很多知识都不熟悉,但是Redis又经常用于缓存,所以我就把Redis 和缓存搞混了。我以为 Redis 就是缓存,缓存就是 Redis。然后我背了好多知识,什么缓存与数据库不一致,什么缓存雪崩缓存穿透这些,都是关于 Redis 的,所以我当时就认为缓存是Redis。那个时候,我一直建立不起系统观,不能对 Redis 和缓存这两个知识点高山看海。后来我看了好多文章,然后通过文章来对自己脑里的知识做梳理总结后,才明白这两者的区别。所以我特意写一篇文章来讲讲 Redis 应用于缓存这个场景。

缓存的两个特征

要讲 Redis 应用于缓存,那我们就先来讲缓存,再讲 Redis。因为我们最终要解决的问题是为什么Redis 可以应用于缓存?kafka 为什么不可以应用于缓存?zookeepeer 为什么不可以?为什么就Redis 可以?

缓存是用来放一些热点数据,加快查询速度的,所以缓存有两大特征:缓存是一个快速的系统,而且缓存的容量小于后端的慢速系统。

缓存在 CPU 和内存中都存在,但是 Redis 应用于内存的缓存,不应用于CPU的缓存。

Redis用于缓存的两大天然优势

上面说了,缓存的一大特点就是快,那 Redis 刚好适合,Redis 很快。同时,Redis 还有专属的数据淘汰机制,使得 Redis 保存的数据会比较少,刚好符合缓存容量小于后端的慢速系统这个特点。

引入缓存的4个问题

这几乎是缓存中最难理解的地方了。这个地方的知识点多而且杂,还不好理解。不过假如你建立了系统观的话也还好,至少回忆起来会快一点。

缓存雪崩

Tomcat 一般是先访问缓存再访问数据库的。但是,假如缓存中数据在某一时刻同时过期,那大量的并发请求就会越过缓存直接走数据库,数据库压力剧增,这就是缓存雪崩。解决方法是给缓存中的数据的过期时间设一个随机值。

缓存穿透

Tomcat 故意大量请求缓存中没有的数据,导致请求走数据库,并发时压力剧增。解决方法是在Dao 层就拦截这种非法请求。

缓存与数据库不一致

说实话,这个是真的烧脑,就很难受,我一直搞不懂这里,因为这里确实很复杂。我尽量将我能理解的写出来......

其实对数据的操作无非就是“读”和“写”。“读”不会造成缓存与数据库不一致的问题,但是“写”就会。“写”其实就是更新的意思,那无论我们先更新数据库再同步给缓存,还是先更新缓存再同步给数据库,我们都想保证这些操作的原子性。假如第一步更新失败了,那就失败呗,没什么大不了的。但是假如第一步更新成功了,第二步更新失败了,那就会造成缓存与数据库不一致的问题(即缓存中的值是新值而数据库中的值是旧值;也有可能缓存中的值是旧值而数据库中的值是新值)。因此更新数据库和更新缓存这个操作不太好。

那我们换一种思路,数据库是必须要更新的,但是缓存不一定需要更新,所以我们能否考虑删除缓存,一了百了呢?我了解到的答案是可以的。先删除缓存再更新数据库,在高并发下不太OK,但是在原子性被破坏的情况下表现很OK。先更新数据库再删除缓存,在高并发下很OK,但在原子性被破坏时不太OK。

缓存数据淘汰策略

因为缓存比较少,没有磁盘那么大,所以不可避免的,过一段时间就要对缓存的数据进行淘汰。而Redis 有自己的数据淘汰策略,所以很适合用作缓存。下面我就来介绍一下 Redis 的数据淘汰策略。

假如你添加了一批键值对,设置了一小时的过期时间。一小时后,这批数据已经全部过期了,你想要删除这些键值对,怎么办?可以采用定期删除策略,即每过100ms就随机抽取一些设置了过期时间的键值对,过期就删除。但是由于是随机的,所以很可能漏掉了一些键值对,因此我们可以采用惰性删除。惰性删除就是你要使用的时候看看键值对是不是过期的,过期就顺便删掉。

但是问题是定期删除+惰性删除也不一定可以保证所有过期数据都被删除,有些数据你随机抽取,抽取不到,而你又一直不适用这些抽取不到的数据,导致这些数据积压在 Redis 中。所以引入了一种技术:通过内存淘汰机制来淘汰键值对。内存淘汰机制的算法有很多,我觉得用的最多的是LRU算法。

小结

在这篇文章中我讲了 Redis 应用于缓存。我先讲了缓存的两个特征,为接下来解答为什么 Redis 可以应用于缓存做铺垫。接着我又讲了引入缓存所遇到的4个问题:缓存雪崩、缓存穿透、缓存与数据库不一致、缓存怎么淘汰数据。

感想

这是我第一次以这种方式来写文章,通过一篇文章(其实是三篇)将我脑子里的 Redis 全景图描绘出来。在这几天的学习中,我的收获还是挺大的,倒不是我学习了很多 Redis 的新知识,当然学习到新知识只是一方面,更重要的是我深刻的理解了建立系统观的重要性。如果没有系统观,我学到的知识仅仅只是几个点,构建不成一个面。这样就会导致我有可能学了很多知识,但是却不知道如何讲起。而且,当我有了系统观,将 Redis 中的各个知识以一个思路串联在一起后,我感觉我对Redis 的很多知识的具体细节又有了新的理解。

那怎么才能建立系统观呢?我个人觉得是看一些优质的技术文章,通过一些优质的文章或者书籍来引导你去思考。最好不要看视频,因为看视频的话你是无法思考的,看视频算是一个接受的过程,没有思考的过程。说到书籍,我有时会去图书馆看很多技术书,但是我不是一整本书全部看完。比如说我看《Redis原理剖析》,我不会一整本看完,而是以一种高山看海的角度去看看这个作者到底是以一种什么样的角度去写 Redis 的,从而去推测出这个作者脑子的 Redis 思维导图,他脑子里的 Redis 总体框架是怎么样的,我能否借鉴一下作者脑子的框架,形成一个属于我自己的 Redis 全景图。这是我觉得形成系统观最重要的一点。接下来,我会继续尝试用这种方式写第二篇长文,第二篇长文的主题是 MySQL。

http://www.hkea.cn/news/539863/

相关文章:

  • 如皋做网站公司com域名
  • 织梦做企业网站教程网络营销推广方案论文
  • 微信如何添加小程序二十条优化措施全文
  • 网站制作费可以做业务宣传费河北百度推广电话
  • wordpress日主题破解网站排名优化软件有哪些
  • 做公众号app 网站 app济南网站设计
  • 单位网站 单位网页 区别吗福州seo顾问
  • 专业做网站制作的公司百度地图网页版进入
  • 买卖网站域名骗局百度推广登陆
  • 石家庄大型网站设计公司手机怎么建网站
  • 政府网站图解怎么做百度关键词排名靠前
  • 天津做网站印标东莞网络推广排名
  • 设计一个外贸网站需要多少钱沈阳网站推广优化
  • 洗化行业做网站福州百度seo排名
  • 西安app网站开发项目腾讯域名注册官网
  • 网站开发的技术指标如何做网站搜索引擎优化
  • 建网站的要求老铁外链工具
  • wordpress有广告郑州seo优化大师
  • 企业网站推广的实验内容企业宣传网站
  • 如何开发高端市场宁波seo快速优化公司
  • 常用设计资源网站爱网站
  • 企业品牌网站营销关于seo的行业岗位有哪些
  • 群晖怎样做网站惠州网络营销
  • 怎么做网站内部链接的优化品牌营销推广代运营
  • 婚纱照网站制作搜索引擎优化搜索优化
  • 网站建设吉金手指专业13中国营销网站
  • 做销售在哪些网站注册好百度产品
  • dw做汽车网站seo排名工具提升流量
  • 网络培训学校排名奉化seo页面优化外包
  • vps除了做网站还能做什么晨阳seo服务