面试前必须要知道的Redis面试
一样平常我们都是采纳删除缓存缓存计策的,缘故起因如下:
基于这两点,对付缓存在更新时而言,都是提议执行删除操纵! 3.3.2先更新数据库,再删除缓存正常的环境是这样的:
假如原子性被粉碎了:
假如在高并发的场景下,呈现数据库与缓存数据纷歧致的概率出格低,也不是没有:
要告竣上述环境,照旧说一句概率出格低: 由于这个前提必要产生在读缓存时缓存失效,并且并发着有一个写操纵。而现实上数据库的写操纵会比读操纵慢得多,并且还要锁表,而读操纵必须在写操纵提高入数据库操纵,而又要晚于写操纵更新缓存,全部的这些前提都具备的概率根基并不大。 对付这种计策,着实是一种计划模式:Cache Aside Pattern 先修改数据库,再删除缓存 删除缓存失败的办理思绪:
3.3.3先删除缓存,再更新数据库正常环境是这样的:
假如原子性被粉碎了:
看起来是很柔美,可是我们在并发场景下说明一下,就知道照旧有题目的了:
以是也会导致数据库缓和存纷歧致的题目。 并发下办理数据库与缓存纷歧致的思绪:
![]() 将操纵积存到行列中 3.4比拟两种计策 我们可以发明,两种计策各自有优弱点:
3.5 其他保障数据同等的方案与资料 可以用databus可能阿里的canal监听binlog举办更新。 参考资料:
https://coolshell.cn/articles/17416.html
https://github.com/doocs/advanced-java/blob/master/docs/high-concurrency/redis-consistence.md
https://zhuanlan.zhihu.com/p/48334686
https://blog.csdn.net/z50l2o08e2u4aftor9a/article/details/81008933 最后这是几道Redis常见的口试题,但愿各人看完有所辅佐,顺遂拿到offer! 【编辑保举】
点赞 0 (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |