你需要知道的,缓存架构的设计和常见问题

缓存架构的设计

缓存层通常架设在 DB 和业务逻辑层之间,核心功能就是从DB生成一条缓存数据,可以在后续若干次查询请求过程中不再访问DB,请求在缓存层直接命中后返回,从而可以达到加快访问速度的作用,同时也能在流量暴增时充当保护层防止DB被打垮。

缓存的引入虽然有优势,但也会带来一些问题,例如缓存穿透、缓存雪崩等,所以哪些场景适合使用缓存需要斟酌。读多写少的场景是很适合的,可以显著降低 DB 的压力;同样,需要进行计数统计的场景,例如访问量等也是适合的,直接内存统计后异步落盘,实时性更好。

缓存穿透

缓存层没有命中数据,从而需要到DB查询,然后将返回结果写入缓存再返回。上述是理想条件,如果DB也没有查询到,那么下一次请求依然不命中缓存,还是会达到DB。因此在流量大的时候,如果缓存迟迟没有数据命中,很可能将 DB 拖垮

解决方法可以是一旦 DB 查询为空,那么也往缓存中写入一条记录,只不过 value 是配置的默认值或者是空值,并设置过期时间,这样的好处是过期时间之内的请求都可以直接在缓存层返回,不会再打到 DB,一旦过期时间到了,再次去查询 DB,此时可能 DB 中已经有数据了(因为其他服务更新了),再将其写入缓存。本质

你可能感兴趣的:(Redis,Distributed,System,Database)