美文网首页AVPlayer
缓存之相关概念和应用模式

缓存之相关概念和应用模式

作者: 每天进步一点点变成更好的自己 | 来源:发表于2022-09-02 08:23 被阅读0次

DNS 原理:http://www.ruanyifeng.com/blog/2016/06/dns.html
HTTP缓存:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Caching

1.缓存

缓存:为了节约对原始资源重复获取的开销,而将结果数据副本存放起来以供获取的方式。

2.缓存的本质

缓存针对的是资源、缓存数据必须是重复获取的、为了解决开销的问题【延迟和吞吐量】、缓存的存取其实不一定是更快的。

3.缓存是怎么应用的

1.对于地址栏中输入的域名,浏览器需要搞清楚它代表的IP地址,才能访问。具体过程如下:

  • 它会先查询浏览器内部的“域名-ip”缓存,如果你曾经使用浏览器访问过这个域名,可能会留有映射缓存。
  • 如果没有,会查询操作系统是否存在这个缓存,例如在Mac中,我们可以通过修改/etc/hosts文件来自定义这个域名到IP的映射缓存。
  • 如果还没有,就会查询域名服务器(DNS,Domain Name System),得到对应的IP和可缓存时间。

2.当请求抵达服务端,在反向代理中也是可以进行缓存配置的,比如服务端包含SSI的方式来加载母页面上的一些静态内容。
反向代理:服务端的代理。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得到反向代理的IP地址,而不知道在代理服务器后面的服务器集群的存在。比如CDN、NGINX、IIS等。
前向代理:客户端的代理 ,将从互联网上获取的资源返回给一个或多个的客户端,服务端(如web服务器)只知道代理的IP地址而不知道客户端的IP地址。


image.png

3.请求终于抵达服务端的代码逻辑,MVC各层都是可以应用缓存模式的。

  • controller层,拦截过滤器,配置缓存对服务进行过滤。直接通过过滤器返回缓存结果,而不执行后面的逻辑。
  • Model层,数据库ORM框架提供了缓存能力。比如对于贫血模式,DAO上方的service层基于其暴露的API应用缓存。
  • View层,很多页面模板都支持缓存标签,页面中的部分内容,不需要每次都执行渲染操作,而可以直接从缓存中获取渲染后的数据并返回。

比如:Cache-Control: public, max-age=84600 即表示可以被任意节点缓存最多84600s。

4.缓存应用模式

1、Cache-Aside
最常见的一种缓存应用模式。
数据获取策略:

  • 应用先去查看缓存是否有所需数据
  • 如果有,应用直接将缓存数据返回给请求发
  • 如果没有,应用执行原始逻辑,例如查询数据库得到结果数据
  • 应用将结果数据写入缓存


    image.png

数据更新策略:

  • 应用先更新数据库
  • 应用再令缓存失效

2、Read-Through
缓存系统彻底变成了它身后数据库的代理,应用的请求访问只能看到缓存的返回数据,而数据库系统对他是透明的。比如ORM框架,通过Read-Through和Write-Through实现。
数据获取策略:

  • 应用向缓存要求数据
  • 如果缓存中有数据,返回给应用,应用在将数据返回
  • 如果没有,缓存查询数据库,并将结果写入自己
  • 缓存将数据返回给应用


    image.png

3、Write-Through
和Read-Through类似,图示同上,但Write-Through是用来处理数据更新的场景。缓存系统需要自己内部保证并发场景下,缓存更新的顺序要和数据库更新的顺序一致。
数据更新策略:

  • 应用要求缓存更新数据
  • 如果缓存中有对应数据,先更新该数据
  • 缓存在更新数据库中的数据
  • 缓存告知应用更新完成

4、Write-Back
对于Write-Back模式来说,更新操作发生的时候,数据写入缓存之后就立即返回了,而数据库的更新异步完成。

相关文章

  • 缓存之相关概念和应用模式

    DNS 原理:http://www.ruanyifeng.com/blog/2016/06/dns.html[ht...

  • 缓存的相关概念和应用

    一般都是用Redis或者Memcached来做数据的缓存,让程序的读取效率更高,以此缓解数据库的压力。 缓存穿透 ...

  • 如何正确的使用缓存

    1. 常见概念 在合理应用缓存前,需要了解缓存领域里相关的几个常用术语: 1)缓存命中:表示数据能够从缓存中获取,...

  • hibernate缓存详解

    什么是缓存 缓存cache:计算机领域非常通用的概念。它介于应用程序和永久性数据存储源(如硬盘的文件或者数据库)之...

  • Glide的内存缓存思路

    Glide缓存功能相关用法 设置内存缓存开关: skipMemoryCache(true) 设置磁盘缓存模式: d...

  • 缓存的相关概念

    cache在计算机组织结构中很重要,理解cache对编写性能友好的程序很有帮助。 1. Cache的历史 在科研领...

  • ios开发常用设计模式:MVC、单例、代理、KVO

    一. MVC模式 1.1 相关概念 模型视图控制器 设计模式 Model:模型保存应用程序的数据 View:视图是...

  • Springboot 之小程序公众号等资料

    公众号 Java微信公众号开发的精彩世界,学习微信公众号开发的相关概念,编辑模式和开发模式应用,以及百度BAE的使...

  • 【LVS】应用负载均衡之LVS

    应用负载均衡之LVS(一):基本概念和三种模式 https://www.cnblogs.com/f-ck-need...

  • Hibernate(十四)二级缓存

    一、Hibernate 缓存 缓存(Cache): 计算机领域非常通用的概念。它介于应用程序和永久性数据存储源(如...

网友评论

    本文标题:缓存之相关概念和应用模式

    本文链接:https://www.haomeiwen.com/subject/phjaqrtx.html