成都传智播客吧 关注:267贴子:2,257
  • 0回复贴,共1

java高频面试题系列:一

只看楼主收藏回复

1.如何保证redis和mysql数据库数据一致性问题?
第一种解决方案:
具体的步骤就是:①先删除缓存里的数据,②在写入数据库,③线程休眠,④再次删除缓存。
一:休眠时间根据项目读取数据业务的耗时,这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。这么做的目的,就是确保读请求结束,写请求可以删除读请求造成的缓存脏数据。
二:从理论上来说,给缓存设置过期时间,是保证最终一致性的解决方案。所有的写操作以数据库为准,只要到达缓存过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存。
以上只是为一种解决方案。
第二种解决方案:
通过MySQL binlog增量订阅消费+消息队列+增量数据更新到redis。
①;读Redis:热数据基本都在Redis,②:写MySQL:增删改都是操作MySQL,③:更新Redis数据:MySQ的数据操作binlog,来更新到Redis


1楼2019-01-07 11:03回复