经典缓存设计方案
CacheAside
3.PNG优点:简单易于实现
缺点:自己维护数据更新后的同步逻辑;对业务代码有侵入性
Reade\Write Through
4.PNG优点:把缓存和数据库看作一个整体,业务逻辑只需要读取和写入数据,不需要关心数据来源于缓存还是数据库,不需要维护同步逻辑
缺点:需要自己封装好缓存和数据库的同步逻辑
WriteBack
writeback.PNG写入只更新缓存,异步同步到数据库
优点:读写都是操作内存,性能高
缺点:数据不是强一致性;宕机可能丢数据
异步更新到缓存
2.PNG优点:引入缓存后对原有系统改动较少;
缺点:存在数据不一致性;没提升写性能
常见问题及解决
大并发场景下需要关注以下缓存使用问题
缓存穿透
高并发查询数据库与缓存都没有的key,可能是恶意攻击
缓存穿透1.PNG
解决办法:
- 给不存在的key,预先设置值,查询到之后应用决定放弃还是等待一段时间,避免打到数据库;
- 借助布隆过滤器
缓存并发
大量并发请求同时查询一个不在缓存的key,导致全打到数据库,查询到之后又都更新到缓存
缓存并发.PNG
解决办法:引入锁机制,只允许一个请求转发到数据库
缓存并发解决PNG.PNG
缓存雪崩
大量缓存在同一时间同时失效,导致大量请求都打到数据库
解决办法:失效时间随机;或者缓存不过期
热点数据
为提高命中率,按照访问频率以及访问时间对数据进行排序,优先保留使用频率高以及最近使用的数据
热点数据.PNG
网友评论