今日学习,缓存和数据库保持一致性,HTTP | 青训营笔记

70 阅读1分钟

今日学习,缓存和数据库保持一致性,HTTP复习加预习,http状态码,HTTP数据压缩

  • 以redis为例:
    • 选中合适的数据存入 Redis 之后,接下来,每当要读取数据的时候,就先去 Redis 中看看有没有,如果有就直接返回;如果没有,则去数据库中读取,并且将从数据库中读取到的数据缓存到 Redis 中

如果缓存更新呢?


三个经典的缓存模式:

  1. Cache-Aside旁路缓存模式

    • 读缓存(先redis在DB)和写缓存(先DB在redis中删除旧缓存)
    • 原子性:使用mq来保证
  2. Read-Through/Write through

  3. Write Behind

    • 将数据写入 DB 可以通过多种方式完成:

      • 一种是收集所有写入操作,然后在某个时间点(例如,当 DB 负载较低时)对数据源进行批量写入。
      • 另一种方法是将写入合并成更小的批次,例如每次收集五个写入操作,然后对数据源进行批量写入

HTTP-数据压缩

image.png

Content-Encoding: gzip,里面时浏览器支持的压缩格式列表,有多种如,gzip,deflate,br等。这样服务器就可以从中选择一个压缩算法,放进Content-Encoding响应头里,再把原数据压缩后发给浏览器。

HTTP-分块传输

将传输的文件分解成多个小块,然后分发给浏览器,浏览器收到后再重新组装复原

  • 每个分开包含两个部分,分块长度分块数据(长度头和数据块)

响应报文里用头字段Transfer-Encoding:chunked表示报文里的body部分不是一次性发送过来的(长度未知),而是分成了许多块逐个发送的