一、缓存通识

1.1、无处不在的缓存

  • cpu缓存
  • 操作系统缓存
  • 数据库缓存
  • JVM编译缓存
  • cdn缓存
  • 代理与反代理缓存
  • 前端缓存
  • 应用程序缓存
  • 分布式对象缓存

1.2、缓存数据存储(Hash表)

缓存数据存储:一般数据放到内存中。

主要是存储数据结构:Hash表

业界缓存数量:百万级一亿级

1.3、缓存的关键指标

缓存命中率

  • 缓存是否有效依赖与能多少次重用同一个缓存响应业务请求,这个度量指标被称作缓存命中率。
  • 如果查询一个缓存,十次查询九次能够得到正确结果,那么它的命中率是90%。

1.4、影响缓存命中率的主要指标

  • 缓存键集合大小
  • 缓存可使用内存空间
  • 缓存对象生存空间

1.4.1、缓存键集合大小

缓存中的每个对象使用缓存键进行识别,定位一个对象的唯一方式就是对缓存键执行精确匹配。例如,如果想为每个商品缓存在线商品信息,你需要使用商品ID作为缓存键。换句话说,缓存键空间是你的应用能够生成的所有键的数量。从统计数字上看,应用生成的唯一键越多,重用的机会越小。例如,如果想基于客户来源国家缓存数量。键数量越少,缓存的效率越高。

1.4.2、缓存可使用内存空间

缓存可使用内存空间直接解决了缓存对象的平均大小和缓存对象数量。因为缓存通常存储在内存中,缓存对象可使用空间受到严格限制降低缓存命中率,因为缓存对象被删除后,将来的请求就无法命中了。物理上能缓存的对象越多,缓存命中率就越高。

1.4.3、缓存对象生存空间

缓存对象生存时间称为TTL(Time To Live)。在某些场景中,例如,缓存天气预报数据15分钟没问题。在这个场景下,你可以设置缓存对象定义TTL为15分钟。在其他场景中,你可能不能冒险使用过于陈旧的数据。例如,在一个电子商务系统中,店铺管理员可能在任何时刻修改商品价格,如果这些价格需要准确地展示在整个网站中。在这个场景下,你需要在每个商品价格修改是让缓存失效。简单讲,对象缓存地时间越长,缓存对象被重用地可能性就越高。

1.5、缓存类型(重点)

1.5.1、代理缓存

1.5.2、反向代理缓存

1.5.3、多层反向代理缓存

1.5.4、内容分布网络(CDN-Content Distribution Network)

CDN国内公司:ChinaCache在08年的时候,互联网需求很大的时候,ChinaCahce差点垮掉。

ChinaCahce提前买了很多CDN服务器放到运营商(中国移动、电信)。但是优酷、土豆等互联网公司快速发展,他们也选择了自建,自己买CDN服务器放到运营商机房。

小网站:云服务提供

大网站:Alibaba、腾讯等都是自建cdn

1.5.5、CDN同时配置静态文件和动态内容

1.5.6、通读缓存(Read-Through)

  • 代理缓存,反向代理缓存,CDN缓存都是通读缓存。
  • 通读缓存给客户端返回缓存资源,并在请求未命中缓存时获取实际数据。
  • 客户端连接的是通过换粗缓存而不是生成相应的原始服务器。

1.5.7、旁路缓存(Cache-Aside)

  • 对象缓存是一种旁路缓存,旁路换粗通常是一个独立的键值对(Key-Value)存储
  • 应用代码通常会询问对象缓存需要的对象是否存在,如果存在,它会获取并使用缓存的对象,如果不存在或已过期,应用会连接主数据源来组装对象,并将其保存回对象缓存中心以便将来使用。

d0cdac16ef77e9ca0f63d8b175e4b82c.png1.5.8、浏览器对象缓存

//在 WebStorage 中缓存对象的 JavaScript 代码 var preferences={/*data object to be stored*/}; localStorage.setItem('preerences',JSON.stringify(preferences)); //访问缓存对象的 JavaScript 代码 var cachedData=localStorage.getItem('preferences'); var preferences=JSON.parse(cachedData); 1234567

1.5.9、本地对象缓存

  • 对象直接缓存在应用商店内存中
  • 对象存储在共享内存,同一台机器的多个进程可以访问它们。
  • 缓存服务器作为独立应用和应用程序部署在同一个服务器上。

本地对象缓存构建分布式集群

小规模可以满足需求,比如Session数据缓存。

大规模不合适:

1.因为数据都是同步的,那么数据存储的数量比较少。

2.数据同步,暂用比较大的网络带宽

1.5.10、远程分布式对象缓存

本地缓存是内存访问,没有远程交互开销,性能最好,但是受限于单机容量,一般内存较小且无法扩展。

分布式缓存一般都是具有良好的水平扩展能力,对较大数据量的场景也能应付自如。缺点就是需要进行远程请求,性能不如本地缓存。

为了平衡这种情况,实际业务中一般采用多级缓存,本地换粗缓存只保存访问频率最高的部分热点数据,其他热点数据放在分布式缓存中。

1.5.11、各种介质数据访问延迟

1.5.12、技术栈各个层次的缓存

1.6、缓存为什么显著提升性能

  • 缓存数据通常来自内存,比磁盘上的数据有更快的访问速度。
  • 缓存存储数据的最终结果形态,不需要中间计算,减少CPU资源的消耗。
  • 缓存降低数据库、磁盘、网络的负载压力,使这些I/O设备获得更好的响应特性。

1.7、缓存是系统性能优化的大杀器

  • 技术简单
  • 性能提升显著
  • 应用场景多

1.8、合理使用缓存(建议)

使用缓存对提高系统性能有很多好处,但是不合理的使用缓存可能非但不能提高系统的性能,还会成为系统的额累赘,甚至风险,实践中,缓存滥用的情节屡见不鲜-过分依赖缓存、不合适的数据访问特性等。

频繁修改的数据:这种数据如果缓存起来,由于频繁修改,应用还来不及读取就已经失效或更新,徒增系统负担。一般来说,数据的读写比在2:1以上,缓存才有意义

原文链接:https://blog.csdn.net/qq_52923100/article/details/125713077?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165934458816782246446218%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=165934458816782246446218&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-27-125713077-null-null.nonecase&utm_term=%E8%87%AA%E5%BB%BAcdn

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/5806

(0)
上一篇 2022年9月5日 03:47
下一篇 2022年9月5日 04:34

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml