反馈回来的面试题
你只要用缓存,就可能涉及到redis缓存与数据库存储双写,
你只要是双写,就一定有数据一致性的问题
那么你如何解决一致性问题?
双写一致性,你先动缓存redis还是数据库mysql哪一个?why?
延时双删你做过吗?会有哪些问题?
有这么一种情况,微服务查询redis无mysql有,为保证数据双写一致性回写redis你需要注意什么?
双检加锁策略你了解过吗?如何尽量避免缓存击穿
redis和mysql双写100%会出纰漏,做不到强一致性,你如何保证最终一致性?
缓存双写一致性,谈谈你的理解
如果redis中有数据:需要和数据库中的值相同
如果redis中无数据:数据库中的值要是最新值,且准备回写redis
缓存按照操作来分,细分两种
1.只读缓存
2.读写缓存
2.1 同步直写策略
写数据库后也同步写redis缓存,缓存和数据库中的数据一致;
对于读写缓存来说,要想保证缓存和数据库中的数据一致,就要采用同步直写策略
2.2 异步缓写策略
正常业务运行中,mysql数据变动了,但是可以在业务上容许出现一定时间后才作用于redis,比如仓库、物流系统
异常情况出现了,不得不将失败的动作重新修补,有可能需要借助Kafka或者rabbitmq等消息中间件,实现重试重写