缓存的认识

简介: 缓存是架构设计中一个重要的手段。缓存的主要特点是技术比较简单,同时对性能提升的效果又很显著,所以缓存在很多业务场景中被使用到。

缓存是架构设计中一个重要的手段。缓存的主要特点是技术比较简单,同时对性能提升的效果又很显著,所以缓存在很多业务场景中被使用到。

特点

  • 技术简单,可以很容易被添加到现有系统应用中,无需复杂的架构技术
  • 有助于提高系统性能
  • 应用场景多。如CPU中的缓存、HTTP浏览器缓存、CDN缓存等等

主要类型

代理缓存

定义:是在应用程序一端的代理,缓存在客户端一端的,代理客户端访问互联网。

作用:互联网访问代理

例子:公司员工的网络请求都连接到公司网络的代理服务器,一员工电脑请求某服务器请求时,都是通过公司的网络代理服务器,且会有缓存存在,其他员工如果是同样的请求时,将有公司网络代理服务器缓存中的数据直接返回。

反向代理缓存

反向代理是代理数据中心输出,反向代理缓存则存在于系统数据中心的。

例子:用户通过互联网连接到数据中心的反向代理服务器上,再由反向代理服务器分发到具体的服务器,如果用户的请求一致,则直接是从反向代理服务器缓存中返回数据

CDN缓存

CDN是指用户请求的前端(与用户地址最靠近)为用户提供数据服务。

用户进行互联网访问的时候,需要通过互联网网络服务商提供的网络链接才能够连接到数据中心,那么网络服务商就可以在自己提供的网络服务的机房里进行一次缓存操作,提供一次缓存服务

对象缓存

分布式对象缓存是指对象缓存以一个分布式集群的方式对外提供服务,多个应用系统使用同一个分布式对象缓存提供的缓存服务

关键指标

缓存命中率,是判断缓存是否有效的关键指标(命中率=查询正确次数/总查询次数)

影响命中率三个因素:

  • 缓存键集合大小(缓存键数量越少,缓存的效率越高)
  • 缓存空间的大小(缓存空间越大,缓存的对象越多,命中率也越高)
  • 缓存的使用寿命(根据业务场景)

    • 被重用的可能性越高,缓存的时间应该越长
    • 缓存失效2种方法:超时失效(设置超时时间)、实时清除(用完就清除)

优势

  • 缓存数据来自内存,访问速度快,处理速度也会更快
  • 缓存存储的数据形态通常是最终的结果形体、减少资源消耗。即,缓存的数据即是我们需要的结果,而不是需要再次加工处理的结果
  • 一次写入多次读取,减少对数据库的使用,减少数据库磁盘或网络的负载压力

缓存注意事项

  • 数据频繁修改
  • 非热点数据,命中率低
  • 数据不一致,数据库数据和缓存中数据不一致
  • 缓存雪崩
目录
相关文章
|
JavaScript
【vue】如何跳转路由到指定页面位置
【vue】如何跳转路由到指定页面位置
316 0
|
边缘计算 安全 中间件
软件体系结构 - 嵌入式系统(4)- 嵌入式中间件
软件体系结构 - 嵌入式系统(4)- 嵌入式中间件
643 0
|
编译器 索引
[Eigen中文文档] 块操作
本文介绍了块操作。块是matrix或array的部分矩形元素。块表达式既可以用作右值也可以用作左值。与Eigen表达式一样,如果让编译器进行优化,则块操作的运行时间成本为零。
364 0
|
XML 前端开发 Java
《手把手教你》系列技巧篇(十四)-java+ selenium自动化测试-元素定位大法之By xpath上卷(详细教程)
【4月更文挑战第6天】按宏哥计划,本文继续介绍WebDriver关于元素定位大法,这篇介绍定位倒数二个方法:By xpath。xpath 的定位方法, 非常强大。使用这种方法几乎可以定位到页面上的任意元素。xpath 是XML Path的简称, 由于HTML文档本身就是一个标准的XML页面,所以我们可以使用Xpath 的用法来定位页面元素。XPath 是XML 和Path的缩写,主要用于xml文档中选择文档中节点。基于XML树状文档结构,XPath语言可以用在整棵树中寻找指定的节点。
227 0
|
存储 移动开发 固态存储
计算机组成原理(3)-----外存储器
计算机组成原理(3)-----外存储器
1478 1
|
存储 运维 算法
社交软件红包技术解密(十三):微信团队首次揭秘微信红包算法,为何你抢到的是0.01元
本文中,我们将介绍几种主流的IM红包分配算法,相信聪明的你一定能从中窥见微信红包技术实现的一些奥秘。
340 0
ASCII编码中定义了33个控制字符
ASCII编码中定义了33个控制字符
1408 2
|
Ubuntu 开发工具 数据安全/隐私保护
虚拟机安装ubuntu并做相关优化配置教程
虚拟机安装ubuntu并做相关优化配置教程
187 0
|
存储 测试技术
性能测试(14)——counter函数
在下拉框中找到counter 函数参数:为TRUE时,表示一个线程中,单独使用一个计数器,为FALSE时,表示不同线程中使用同一个计数器 存储结果的变量名:会将计数器存储到jmeter变量中
323 0
性能测试(14)——counter函数
|
Ubuntu Linux 网络安全
【Linux】虚拟机安装Linux、客户端工具及Linux常用命令(详细教程)
【Linux】虚拟机安装Linux、客户端工具及Linux常用命令(详细教程)
420 1