缓存系统应用

经典缓存设计方案

CacheAside

3.PNG

优点:简单易于实现
缺点:自己维护数据更新后的同步逻辑;对业务代码有侵入性

Reade\Write Through

4.PNG

优点:把缓存和数据库看作一个整体,业务逻辑只需要读取和写入数据,不需要关心数据来源于缓存还是数据库,不需要维护同步逻辑
缺点:需要自己封装好缓存和数据库的同步逻辑

WriteBack

writeback.PNG

写入只更新缓存,异步同步到数据库
优点:读写都是操作内存,性能高
缺点:数据不是强一致性;宕机可能丢数据

异步更新到缓存

2.PNG

优点:引入缓存后对原有系统改动较少;
缺点:存在数据不一致性;没提升写性能

常见问题及解决

大并发场景下需要关注以下缓存使用问题

缓存穿透

高并发查询数据库与缓存都没有的key,可能是恶意攻击


缓存穿透1.PNG

解决办法:

  1. 给不存在的key,预先设置值,查询到之后应用决定放弃还是等待一段时间,避免打到数据库;
  2. 借助布隆过滤器

缓存并发

大量并发请求同时查询一个不在缓存的key,导致全打到数据库,查询到之后又都更新到缓存


缓存并发.PNG

解决办法:引入锁机制,只允许一个请求转发到数据库


缓存并发解决PNG.PNG

缓存雪崩

大量缓存在同一时间同时失效,导致大量请求都打到数据库
解决办法:失效时间随机;或者缓存不过期

热点数据

为提高命中率,按照访问频率以及访问时间对数据进行排序,优先保留使用频率高以及最近使用的数据


热点数据.PNG

总结

总结.PNG

你可能感兴趣的:(缓存系统应用)