面试题答案
一键面试场景一:缓存更新与数据库更新不同步
- 原理:在高并发场景下,应用程序可能先更新数据库,再更新缓存。但如果在更新数据库后,还未来得及更新缓存时,有其他请求读取数据,此时会从缓存中读取到旧数据,导致缓存与数据库数据不一致。同理,若先更新缓存,后更新数据库,在更新数据库失败的情况下,也会出现数据不一致。例如电商系统中商品库存的更新,如果先更新库存数据库,后更新缓存库存,在中间间隙被读取,就会读到旧的缓存库存数据。
场景二:缓存过期引发的不一致
- 原理:设置了缓存过期时间,当缓存过期后,多个请求同时发现缓存不存在,都会去数据库读取数据并更新缓存。若这期间数据库数据被其他操作修改,就会导致部分请求更新到旧数据到缓存中,从而造成缓存与数据库数据不一致。比如新闻资讯类应用,文章缓存过期后,多个用户同时访问文章,此时若文章在数据库中被编辑,部分用户更新的缓存可能还是旧文章内容。