这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天
缓存雪崩
当大量缓存数据在同一时间过期(失效)或者 Redis 故障宕机时,如果此时有大量的用户请求,都无法在 Redis 中处理,于是全部请求都直接访问数据库,从而导致数据库的压力骤增,严重的会造成数据库宕机,从而形成一系列连锁反应,造成整个系统崩溃,这就是缓存雪崩的问题。
缓存穿透
当用户访问的数据,既不在缓存中,也不在数据库中,导致请求在访问缓存时,发现缓存缺失,再去访问数据库时,发现数据库中也没有要访问的数据,没办法构建缓存数据,来服务后续的请求。那么当有大量这样的请求到来时,数据库的压力骤增,这就是缓存穿透的问题。
缓存击穿
如果缓存中的某个热点数据过期了,此时大量的请求访问了该热点数据,就无法从缓存中读取,直接访问数据库,数据库很容易就被高并发的请求冲垮,这就是缓存击穿的问题。
RDB 快照
RDB(Redis Database) :RDB,简而言之,就是在不同的时间点,将 Redis 存储的数据生成快照并存储到磁盘等介质上。(Redis 默认使用 RDB 作为持久化方式)
AOF 日志
AOF(Append Only File) :以独立日志的方式记录仪每次写命令,重启时再重新执行 AOF 文件中的命令达到恢复数据的目的。与 RDB 相比可以简单描述为改记录数据为记录数据产生的过程。AOF 的主要作用是解决了数据持久化的实时性,目前已经是 Redis 持久化的主流方式。
Redis 数据类型
- String(字符串)
- Hash(哈希)
- List(列表)
- Set(集合)
- Zset(有序集合)
这五种是最为常见的五种数据类型,但在新版本中,又添加了四种数据类型
- BitMap(2.2 版新增)
- HyperLogLog(2.8 版新增)
- GEO(3.2 版新增)
- Stream(5.0 版新增)