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

发布时间:2023年12月17日

本心、输入输出、结果

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


编辑:简简单单 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 对文章进行排序。

在这里插入图片描述

顶级缓存策略

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

在这里插入图片描述

弘扬爱国精神

在这里插入图片描述

文章来源:https://blog.csdn.net/qq_15071263/article/details/133969262
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。