基本概念
-
缓存的作用
- 提升业务响应的速度
- 避免高并发压力发送到数据库层
-
关键问题
- redis缓存是怎么工作的
- redis缓存满了怎么办
- 缓存一致性、缓存穿透、缓存雪崩、缓存击穿等异常,该如何应对?
- redis可以使用固态硬盘吗?\
缓存的特征
-
为什么需要缓存
- 计算机每层间访问速度不一样,需要通过缓存提升处理速度
- 每当数据命中缓存时,总是可以获取数据
- 只能缓存部分数据,缓存容量有限 需要不停的淘汰数据
-
cpu中的缓存
- cpu末级缓存即LLC,缓存内存中数据,避免每次从内存中存取数据
- 内存中的高速页缓存,page cache,缓存磁盘数据,避免每次从磁盘获取
redis缓存处理请求的两种情况
-
缓存命中:有对应数据,直接读取Redis,性能非常快
-
缓存缺失:
- 从数据库获取数据
- 将缺失数据写入Redis
redis作为旁路缓存的使用操作
-
什么是旁路缓存
- 读取缓存、读取数据库和更新缓存的操作都需要在应用程序中来完成(不是直接通过redis 客户端完成)
- 需要在代码中增加显式操作
- 码已经没有再维护了,或者是第三方供应商开发的应用,没有提供源码,所以,我们就没有办法在这些应用中进行缓存操作
缓存的类型
-
只读缓存
-
加速读请求
-
如果有删除数据库操作,则删除缓存
-
举个栗子:
- 图片
- 短视频
- ...
-
-
读写缓存
-
加速读写请求,对缓存执行写操作 但是最新的数据在缓存中,掉电会导致数据丢失
-
写的方式
-
同步写回策略\
- 写操作会同时对缓存和数据库进行,等到都写完数据后才给客户端返回
- 增加响应延迟
-
异步写回策略
- 写写入缓存中,当他们被缓存淘汰后,将数据写会数据库
- 但是掉电会导致数据丢失
-
-
总结
-
缓存的两个特征
- 加速访问
- 容量邮箱
-
Redis 作为旁路缓存
-
redis缓存模式
-
只读缓存
-
读写缓存
- 同步
- 异步
-
\