MST

星途 面试题库

面试题:缓存设计之中等难度:缓存一致性问题场景分析

请描述在后端开发中,至少两种可能导致缓存一致性问题的常见场景,并简要说明其原理。
38.6万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

场景一:缓存更新与数据库更新不同步

  1. 原理:在高并发场景下,应用程序可能先更新数据库,再更新缓存。但如果在更新数据库后,还未来得及更新缓存时,有其他请求读取数据,此时会从缓存中读取到旧数据,导致缓存与数据库数据不一致。同理,若先更新缓存,后更新数据库,在更新数据库失败的情况下,也会出现数据不一致。例如电商系统中商品库存的更新,如果先更新库存数据库,后更新缓存库存,在中间间隙被读取,就会读到旧的缓存库存数据。

场景二:缓存过期引发的不一致

  1. 原理:设置了缓存过期时间,当缓存过期后,多个请求同时发现缓存不存在,都会去数据库读取数据并更新缓存。若这期间数据库数据被其他操作修改,就会导致部分请求更新到旧数据到缓存中,从而造成缓存与数据库数据不一致。比如新闻资讯类应用,文章缓存过期后,多个用户同时访问文章,此时若文章在数据库中被编辑,部分用户更新的缓存可能还是旧文章内容。