面试前必须要知道的Redis面试
发布时间:2019-02-20 18:08:58 所属栏目:建站 来源:Java3y
导读:副标题#e# 今天来分享一下Redis几道常见的面试题: 如何解决缓存雪崩? 如何解决缓存穿透? 如何保证缓存与数据库双写时一致的问题? 一、缓存雪崩 1.1 什么是缓存雪崩? 回顾一下我们为什么要用缓存(Redis): 为什么要缓存 现在有个问题,如果我们的缓存挂掉了
一般我们都是采取删除缓存缓存策略的,原因如下:
基于这两点,对于缓存在更新时而言,都是建议执行删除操作! 3.3.2先更新数据库,再删除缓存正常的情况是这样的:
如果原子性被破坏了:
如果在高并发的场景下,出现数据库与缓存数据不一致的概率特别低,也不是没有:
要达成上述情况,还是说一句概率特别低: 因为这个条件需要发生在读缓存时缓存失效,而且并发着有一个写操作。而实际上数据库的写操作会比读操作慢得多,而且还要锁表,而读操作必需在写操作前进入数据库操作,而又要晚于写操作更新缓存,所有的这些条件都具备的概率基本并不大。 对于这种策略,其实是一种设计模式:Cache Aside Pattern 先修改数据库,再删除缓存 删除缓存失败的解决思路:
3.3.3先删除缓存,再更新数据库正常情况是这样的:
如果原子性被破坏了:
看起来是很美好,但是我们在并发场景下分析一下,就知道还是有问题的了:
所以也会导致数据库和缓存不一致的问题。 (编辑:宿州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐