1:缓存穿透
场景说明:
有个坏人得知数据库中没有name="xxx"的数据.则多线程并发操作访问name="xxx"的数据.
说明:访问数据库中压根不存在的数据,则导致缓存失效.所有的请求都访问数据库.导致数据库有宕机的风险.称之为缓存穿透.
如何解决:
一般做数据的有效性的校验.
2:缓存击穿
场景说明:
美国的暴乱信息,则redis缓存服务器中存储.但是该数据设定了有效期.当数据有效期时间一到,该数据就会在内存中删除.如果在这时有海量的用户访问"暴乱信息"则都会去查询数据库,导致数据库在一定的时间内并发增多,数据库有宕机的风险.
说明:某个热点数据(1个数据)由于超时/删除,导致大量的用户请求在同一时间访问数据库.
如何解决:
1.将热点数据永久保存.
2.添加互斥(排它)锁(每次只能有一个用户访问数据库/第二次走缓存) lock操作
3:缓存雪崩
场景说明:
在redis内存中的数据,在一定的时间内,有大量的缓存数据失效(多个),这时用户大量的访问缓存服务器,但是缓存中没有指定数据,则访问数据库.容易出现数据库宕机的现象.
如何解决:
1.让热点数据永久有效
2.设定超时时间采用随机数. 让超时的数据不要在同一时间发生
3.设定多级缓存
我是今晚打老虎,一个没有技术,只会吹牛的入门程序员。分享一些日常,希望对你们有所帮助.最后别忘了三连啊,点赞、收藏、留言,再不济评论扣6,代表你看过哦!