🏆 技术专题第八期 | 聊聊缓存的妙用和问题

11,530 阅读5分钟

掘友们,大家好呀。

技术专题七期|万物皆可 Serverless征文继续ing 正在热火朝天的进行中,之前的技术专题对于技术领域领域有所限制,那我们第八期就没有明显的领域限制啦。

本期我们来聊一聊缓存的妙用和问题,说一说你是如何利用缓存解决问题,也谈一谈因为缓存又带来了哪些新的问题!

回顾一下缓存的原始意义:是指访问速度比一般随机存取存储器(RAM)快的一种高速存储器,通常它不像系统主存那样使用DRAM技术,而使用昂贵但较快速的SRAM技术,缓存的设置是所有现代计算机系统发挥高性能的重要因素之一。

可以看到缓存的最初使用是作用于系统级的,但随着一代代工程师的挖掘和实战,缓存慢慢的走进了更多的生态之中,比如:浏览器缓存,后端体系中如MyBatis框架中的一级、二级缓存、基于Redis搭建的缓存服务等等,甚至为了保证网络质量不佳情况时APP的正常使用,我们也会为所有的 API 加上缓存,从另一个方面说,缓存已经成为互联网生态中必不可少的一部分。

总结一句话:缓存是提高性能最好的方式。

在缓存的设计与使用中,存在多种多样的技巧和方案,本文抛砖引玉,以Cache Aside 更新模式为例来介绍一下最常用的缓存设计方案,主要逻辑即考虑:失效、命中、更新时的动作。

失效:应用程序先从 Cache 取数据,如果没有得到,则从数据库中取数据,成功后,放到缓存中。 命中:应用程序从 Cache 中取数据,取到后返回。 更新:先把数据存到数据库中,成功后,再让缓存失效。

如此一来,便可以建立起一个简单的缓存服务,为接口提高最高效率的查询速度。 但是朋友们,重点来了,这样做真的是完美方案吗?我们会问这样的几个问题:

为什么不是写完数据库后更新缓存 如何保证缓存的命中 如何保证数据的强一致性 如何设计缓存的淘汰策略 如何有效的水平拓展缓存服务 如何配合缓存设计最大吞吐量的系统 如何做好针对缓存的监控 如何设计多级缓存

啊,思考这些问题一下子头都秃了,掘友们,掘金酱的头发就等着你们来拯救啦!希望小伙伴们踊跃的参与到本期的技术征文之中,可以参考的技术主题如下:

缓存设计方案中临界问题的研究和探讨 通用的缓存设计方案 在实际项目中如何利用缓存提高系统性能 因为使用缓存带来了什么问题,你又是如何解决的 如何利用缓存解决网络质量差时前端渲染问题

参与方式

征文活动面向所有掘金用户,参与方式如下:

参与活动用户请以「文章标题 | 🏆 技术专题第八期征文 」作为写作内容标题。发布文章时,本期射击较广不对标签做限制,请选择相应的技术分类和标签即可,但是文末也需附上本次征文活动的链接。

格式为:

  1. 使用 掘金 Markdown 编辑器 的同学直接复制以下内容到文章后
 [🏆 技术专题第八期 | 聊聊缓存的妙用和问题](https://juejin.cn/post/6909884662638706702/)
  1. 使用 掘金富文本编辑器 的同学直接复制以下内容到文章后

    🏆技术专题第八期 | 聊聊缓存的妙用和问题

奖项设置

同样地,我们为本次活动准备了丰富的奖品:

  • 🏆一等奖:文章总积分排名分前5的作者将获得「掘金周边大礼包」,共计 5 名。

  • 💙二等奖:参与活动的文章中,点赞量最高的前 5 篇文章的作者将获得掘金「掘金搪瓷杯+《MySQL是怎样运行的:从根儿上理解MySQL》 」一本;

  • 👏三等奖:参与活动的文章中,评论互动量最高 5 篇文章的作者将获得「帽子一顶」;

  • 🎉新人鼓励奖:我们会在参与掘金征文的新人中随机抽奖送出「掘金搪瓷水杯」共计 10 名;

  • 🐱参与奖:所有参与写作并符合要求的作者可获得「小册全场通用六折码 三枚 」,不限名次。

  • 以上奖项不可重复获得(参与奖不在内),重复会进行顺延(如果同时获得其中 2 个奖项,将按分类排序,取最高排名所在的奖项类别);

  • 评选总维度:内容质量

流量扶持

所有符合征文活动要求的参与文章,都将获得「 掘金首页热门推荐」,更有机会获得掘金官方微博、微信公众号等渠道推荐,让更多用户可以看到你的文章。

特别感谢

  • 感谢@是Kerwin啊对本文内容的支持;

  • 欢迎所有 lv3 以上作者联系我微信:229199157,加入作者推荐群!