- 先更新数据库,再更新redis
存在漏洞,如果更新Redis失败,仍然会导致不一致
- 先删Redis,再更新数据库并同步数据到Redis
存在漏洞,多线程情况下,线程1删除redis后,还是有可能被其他线程读取旧的数据库数据加载到redis当中
- 延迟双删, 在2的基础上,更新成功后延迟x秒再删除一遍redis
较好的解决方案,可以避免多线程情况下的问题,但其实还是会存在问题,例如第二次删除也失败,或者延时期间的不一致问题,不过我们一般处理到延迟双删就可以了,极端的场景需要更加细致的处理方案