系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第三部分:缓存

本心、输入输出、结果

文章目录

  • 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第三部分:缓存
    • 前言
      • 缓存数据存储在什么地方
        • 图层说明
      • 为什么 Redis 这么快?
      • 如何使用 Redis
      • 顶级缓存策略
      • 弘扬爱国精神

系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第三部分:缓存


编辑:简简单单 Online zuozuo
地址:https://blog.csdn.net/qq_15071263

在这里插入图片描述


如果觉得本文对你有帮助,欢迎点赞、收藏、评论

前言

我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节

我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节

在这里插入图片描述

缓存数据存储在什么地方

该图说明了,我们在典型架构设计中,缓存存放的位置

在这里插入图片描述

图层说明

有多个图层

  1. 客户端应用:浏览器可以缓存 HTTP 响应。我们第一次通过 HTTP 请求数据,并在 HTTP 标头中返回过期策略;我们再次请求数据,客户端应用首先尝试从浏览器缓存中检索数据。
  2. CDN:CDN 缓存静态 Web 资源。客户端可以从附近的 CDN 节点检索数据。
  3. 负载均衡器:负载均衡器也可以缓存资源。
  4. 消息传递基础结构:消息代理首先将消息存储在磁盘上,然后使用者按照自己的节奏检索它们。根据保留策略,数据会在 Kafka 集群中缓存一段时间。
  5. 服务:服务中有多个缓存层。如果数据未缓存在 CPU 缓存中,则服务将尝试从内存中检索数据。有时,服务具有二级缓存来在磁盘上存储数据。
  6. 分布式缓存:像 Redis 这样的分布式缓存在内存中保存多个服务的键值对。它提供了比数据库更好的读/写性能。
  7. 全文搜索:我们有时需要使用全文搜索(如弹性搜索)进行文档搜索或日志搜索。数据副本也会在搜索引擎中编制索引。
  8. 数据库:即使在数据库中,我们也有不同级别的缓存:
  • WAL(预写日志):在构建 B 树索引之前先将数据写入 WAL
  • 缓冲池:分配给缓存查询结果的内存区域
  • 物化视图:预先计算查询结果并将其存储在数据库表中,以提高查询性能
  • 事务日志:记录所有事务和数据库更新
  • 复制日志:用于记录数据库集群中的复制状态

在这里插入图片描述

为什么 Redis 这么快?

为什么 Redis 这么快?有如图所示的三个原因

在这里插入图片描述

  1. Redis 是一个基于 RAM 的数据存储。RAM 访问至少比随机磁盘访问快 1000 倍。
  2. Redis 利用 IO 多路复用和单线程执行循环来提高执行效率。
  3. Redis 利用了几种高效的低级数据结构

在这里插入图片描述

如何使用 Redis

如图所示

在这里插入图片描述

Redis 不仅仅是缓存。

Redis 可用于各种方案,如图所示。

  1. 会话 : 我们可以使用 Redis 在不同服务之间共享用户会话数据。
  2. 缓存 : 我们可以使用 Redis 来缓存对象或页面,尤其是热点数据。
  3. 分布式锁 : 我们可以使用 Redis 字符串来获取分布式服务之间的锁。
  4. 计数器 : 我们可以计算文章有多少喜欢或多少阅读。
  5. 速率限制器 : 我们可以为某些用户 IP 应用速率限制器。
  6. 全局 ID 生成器 : 我们可以将 Redis Int 用于全局 ID。
  7. 购物车 : 我们可以使用 Redis 哈希来表示购物车中的键值对。
  8. 计算用户留存率 : 我们可以使用位图来表示用户每天的登录并计算用户留存率。
  9. 消息队列 : 我们可以将 List 用于消息队列。
  10. 排名 : 我们可以使用 ZSet 对文章进行排序。

在这里插入图片描述

顶级缓存策略

设计大型系统通常需要仔细考虑缓存。 以下是五种经常使用的缓存策略

在这里插入图片描述

弘扬爱国精神

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/113931.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SystemVerilog学习(4)——自定义结构

一、 通过typedef来创建用户自定义类型 typedef语句可以用来创建新的类型。例如,你要求一个算术逻辑单元(ALU)在编译时可配置,以适应8比特、16比特,24比特或32比特等不同位宽的操作数。在Verilog中,你可以为操作数的位宽和类型分别定义一个宏(macro),如例2.32所示。 SV则提供了…

运行stable-diffusion-xl-refiner-1.0遇到version `GLIBCXX_3.4.29‘ not found的问题

一、问题背景 https://huggingface.co/stabilityai/stable-diffusion-xl-refiner-1.0 在运行示例程序时候遇到GLIBCXX_3.4.29‘ not found diffusers to > 0.18.0 import torch from diffusers import StableDiffusionXLImg2ImgPipeline from diffusers.utils import loa…

sqlmap --os-shell选项原理解析

文章目录 sqlmap --os-shell选项原理解析原理解析总结 sqlmap --os-shell选项原理解析 以sqli第一关为例。 --os-shell 是 SQLMap 工具的一个参数,用于在成功注入数据库后,执行操作系统命令并获取其输出。 sqlmap -u "http://192.168.188.199/sq…

100天掌握网络安全知识点!

1.网络安全是什么 网络安全可以基于攻击和防御视角来分类,我们经常听到的 “红队”、“渗透测试” 等就是研究攻击技术,而“蓝队”、“安全运营”、“安全运维”则研究防御技术。 2.网络安全市场 一、是市场需求量高; 二、则是发展相对成熟…

数据库基础(二)【MySQL】

文章目录 什么是数据库数据库是运行在操作系统中的软件 为什么需要数据库有哪些数据库MySQL 的体系架构网络连接层/API 层数据库服务层存储引擎层系统文件层 什么是 SQL参考资料 阅读前导:理论上数据库可以在操作系统和网络之前学习,但是这样会让学习层次…

全球国家行政区划边界(中国科学院地理科学与资源研究所)

简介: 行政区划边界是指各个行政区域之间划定的界限,以确保行政管理的有序和合法。通常,这些边界是根据政治、行政、文化等因素来划分的,如国家、省份、市级行政单元、县区等。这些行政区划边界的划分和调整需要经过政府的制定和…

Spring Security登录账户自定义与数据持久化(5)

1、用户自定义 在前面的案例中,我们的登录用户是基于配置文件来配置的(本质是基于内存),但是在实际开发中,这种方式肯定是不可取的,在实际项目中,用户信息肯定要存入数据库之中。 Spring Security支持多种用户定义方…

C++中重载构造函数

C中重载构造函数 C 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。…

面试题:谈谈过滤器和拦截器的区别?

文章目录 一、拦截器和过滤器的区别二、拦截器和过滤器的代码实现1、拦截器2、过滤器 三、总结1、什么是Filter及其作用介绍2、Filter API介绍3、Filter链与Filter生命周期 四、拦截器五、过滤器和拦截器的区别 一、拦截器和过滤器的区别 1、拦截器(Interceptor)只对action请求…

全国跨境电商综试区评估结果出炉,上市公司业绩渐入佳境

据悉,全国跨境电商综试区现场会已于近日顺利召开。本次现场会关于国内跨境电商综试区考核评估结果也相继出炉,多地城市上榜,长沙挺进“第一档”阵营。随着对我国跨境电商发展机遇的把握,A股上市企业业绩纷纷抬头。 跨境电商综试区…

AdaBoost:增强机器学习的力量

一、介绍 机器学习已成为现代技术的基石,为从推荐系统到自动驾驶汽车的一切提供动力。在众多机器学习算法中,AdaBoost(自适应增强的缩写)作为一种强大的集成方法脱颖而出,为该领域的成功做出了重大贡献。AdaBoost 是一…

ESRI ArcGIS Pro 3.0-3.0.2图文安装教程及下载

ArcGIS 是由美国著名的地理信息系统公司 Esri 开发的一款地理信息系统软件。ArcGIS Pro是一款功能强大的单桌面 GIS 应用程序,是在桌面上创建和处理空间数据的基本应用程序。ArcGIS Pro支持数据可视化和数据高级分析,可以创建 2D 地图和3D 场景。它支持跨…

Qt扫盲-QBrush理论使用总结

Q 理论使用总结 一、概述1. 填充模式2. 笔刷颜色3. 纹理 二、 Qt::GlobalColor 一、概述 QBrush类定义了由 QPainter 绘制的形状的填充模式。画笔有样式、颜色、渐变和纹理。 brush style() 使用Qt::BrushStyle 枚举定义填充模式。默认的笔刷样式是 Qt::NoBrush(取决于你如何…

JAVA基础-命名规则(1)

目录 1、标识符:2、字面值3、变量4、常量5、Java修饰符6、关键字7、其他 1、标识符: 标识符可以标识什么元素(idea中高亮显示为黑色的为标识符) :::tips 类名* 方法名* 变量名* 接口名* 常量名 ::: 命令规则: :::tip…

「2021年TYWZ普及模拟题」多边形 待定题解

文章目录 题目描述输入格式输出格式样例样例输入 1样例输出 1样例输入 2样例输出 2 数据范围与提示前置知识思路与部分实现完整代码文章小结 题目描述 一个凸多边形具有非常多优秀的性质,它的任意内角小于或等于 18 0 。 180^。 180。 。 小 F 将 n n n 条边交给…

UE5 Python脚本自动化Sequence Key帧

前言 码上1024了,给大家分享一个UE5的脚本小功能,UE5中Sequence动态Key功能,这样我们就可以根据我们的数据动态更新了,非常实用,适合刚入门或者小白,接下来我就把整个过程分享给大家。 过程 新建一个工程…

测试自动化框架

几代测试自动化框架 在开始自动化项目之前,您需要了解需求;您拥有哪些资源、需要自动化哪些内容、支持的平台等。但是,框架有不同类型,您需要仔细选择其中一种类型。您需要回答许多问题才能成功完成该过程。这里是其中的一些&…

【Android知识笔记】Webview专题

WebView 核心组件 类名作用常用方法WebView创建对象加载URL生命周期管理状态管理loadUrl():加载网页 goBack():后退WebSettings配置&管理 WebView缓存:setCacheMode() 与JS交互:setJavaScriptEnabled()WebViewClient处理各种通知&请求事件should

DDD与微服务的千丝万缕

一、软件设计发展过程二、什么是DDD?2.1 战略设计2.2 战术设计2.3 名词扫盲1. 领域和子域2. 核心域、通用域和支撑域3. 通用语言4. 限界上下文5. 实体和值对象6. 聚合和聚合根 2.4 事件风暴2.5 领域事件 三、DDD与微服务3.1 DDD与微服务的关系3.2 基于DDD进行微服务…

【深入探究Java集合框架】从List到Map的完整指南

文章目录 🌟 Java集合框架🍊 Collection🎉 List🎉 Set🎉 Map 🍊 集合的选择🎉 1. 有序并允许重复元素的集合 List🎉 2. 无序并且不允许重复元素的集合 Set🎉 3. 维护映射…