秒杀项目之缓存一致性问题
缓存一致性问题:数据库更改了数据,Redis里的数据就和数据库不一致了,产生脏读
解决办法:
1)做一个job,去定时同步数据库里的数据都redis缓存中,我们的业务请求直接查询redis缓存,无论有或者没有数据都直接返回结果。这样可以避免缓存穿透、缓存雪崩等问题,也能缓解redis缓存和数据库不一致的情况,但是还无法彻底解决一致性的问题。在job的间隔期内对数据的修改必须要等到下一次job的运行。
2)缓存同步加强版
3)实时刷新、定时同步
a.增加一个cache中间件,专门处理各类缓存同步事件,采用消息队列机制保证每一次数据的操作都能够刷新对应的缓存数据;转自:https://blog.csdn.net/weixin_40599674/article/details/101280754
b.采用elastic-job做定时的增量/全量数据同步;
c.服务请求大部分走redis,高并发API只走缓存,不允许流量进入数据库层面;