要保证一致性 那就是mysql和redis要保证原子性
当然保证原子性是不可能的 可以有一种择优的方法 网上说双删 我感觉双删太复杂 我不建议采取
我方案就是
1 用redis记录下准备开始
2 缓存失效
3 读取数据库
4 数据库数据写入缓存
5 用redis记录下确保执行完
就是要保证 1到5 中间不能操作数据 ==原子性
所以每次操作数据都要保证1到5的完成
1 之前 也要保证没有操作 1 – 5 操作中没有其他操作 5 后随意
有2种方法可以解决
1 redis写互斥 (除了用setnx就可以) 就是TPS降低了 但也没办法 如果用常驻内存写互斥可能更快点
这种情况一般用于排行榜用户信息存在redis 更新redis又要更新数据库 所以 缓存丢失的时候 一定要保证 一致 如果没这个需求就不用考虑一致性了
其实只要有钱 我觉得还是全部用mysql就行了 集群搞下。不就蛋疼缓存和mysql一致性问题了
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/4016.html