redis知识点
两种主要的持久化机制
1.RDB(Redis Database)
- 原理:在指定的时间间隔内,将内存中的数据集快照写入磁盘,生成一个二进制的 dump.rdb 文件。
2.AOF(Append Only File)
- 原理:记录每次写操作命令到 appendonly.aof 文件,恢复时重新执行这些命令来重建数据。
当缓存使用不当时,可能会导致请求瞬间打到db,db 扛不住挂掉。
常见的有以下三种问题。
2.1 缓存穿透
概念说明:指 cache 和 db 中都没有数据,读完 cache 没有,再读 db 还是没有,每次请求到 cache 和 db。
解决方法:
a).拦截非法请求,比如不正常的 id 请求直接拒绝。
b).没有数据时也 cache 下,过期时间可设置短点,不把过多请求打到 db 去。
c).使用 Write Behind Caching 模式,命中不了 cache 不读取 db。这时需要注意 cache 大小,此时的数据都存在了内容。
d).采用布隆过滤器,不存在的 key 直接过滤;布隆过滤器判断存在,则数据可能存在,如果判断不存在,则肯定不存在。
一般建议前两种,实现起来比较简单
2.2 缓存击穿
概念说明:一般是少量热点数据过期(比如微博热搜),导致大量请求查 cache 没有,又查 db。
解决方法:
a)热点 key 永不过期,异步更新。
b)更新热点 key 时加锁,同一个 key 最好只有一个请求打到 db。
c)接口限流,熔断、降级。
2.3 缓存雪崩
概念说明:大量 cache 数据同时过期,导致大量请求打到 db。
解决方法:
a).热点 key 永不过期,异步更新。
b).防止同时大量数据过期,cache 过期时间随机抖动下。
————————————————
版权声明:本文为CSDN博主「杨天楠」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_33643798/article/details/113911080