今日学习,缓存和数据库保持一致性,HTTP复习加预习,http状态码,HTTP数据压缩
- 以redis为例:
- 选中合适的数据存入 Redis 之后,接下来,每当要读取数据的时候,就先去 Redis 中看看有没有,如果有就直接返回;如果没有,则去数据库中读取,并且将从数据库中读取到的数据缓存到 Redis 中
如果缓存更新呢?
三个经典的缓存模式:
-
Cache-Aside旁路缓存模式
- 读缓存(先redis在DB)和写缓存(先DB在redis中删除旧缓存)
- 原子性:使用mq来保证
-
Read-Through/Write through
-
Write Behind
-
将数据写入 DB 可以通过多种方式完成:
- 一种是收集所有写入操作,然后在某个时间点(例如,当 DB 负载较低时)对数据源进行批量写入。
- 另一种方法是将写入合并成更小的批次,例如每次收集五个写入操作,然后对数据源进行批量写入
-
HTTP-数据压缩
Content-Encoding: gzip,里面时浏览器支持的压缩格式列表,有多种如,gzip,deflate,br等。这样服务器就可以从中选择一个压缩算法,放进Content-Encoding响应头里,再把原数据压缩后发给浏览器。
HTTP-分块传输
将传输的文件分解成多个小块,然后分发给浏览器,浏览器收到后再重新组装复原
- 每个分开包含两个部分,分块长度和分块数据(长度头和数据块)
响应报文里用头字段Transfer-Encoding:chunked表示报文里的body部分不是一次性发送过来的(长度未知),而是分成了许多块逐个发送的