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

本心、输入输出、结果

文章目录

  • 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第三部分:缓存
    • 前言
      • 缓存数据存储在什么地方
        • 图层说明
      • 为什么 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

如图所示

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

Redis 不仅仅是缓存。

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

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

在这里插入图片描述

顶级缓存策略

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

弘扬爱国精神

在这里插入图片描述

你可能感兴趣的:(缓存,redis,架构)