缓存策略
缓存策略
缓存的实际用处
接单大厅
物流仓库等
缓存的场景
- 计算的结果,如:反射对象缓存
- 请求的结果,如:DNS缓存
- 临时共享数据,如:会话存储
- 热点访问内容页:如:商品详情
- 热点变更逻辑数据,如:秒杀的存储库,排行榜
缓存的策略
- 越接近最终的输出结果,效果越好
- 缓存命中率越高越好
缓存的位置
- 浏览器中
- 反向代理服务器中
- 应用进程内存中
- 分布式存储系统中
缓存实现的要点
- 缓存Key生成策略,表示缓存数据的范围,业务含义
- 缓存失效策略,如:过期时间机制,主动刷新机制
- 缓存更新策略,表示更新缓存数据的时机
出现的问题
- 缓存失效,导致数据不一致
- 缓存穿透,查询无数据时2,导致缓存不生效,查询都落到数据库 **建议:强制返回一个默认值,
- 缓存击穿,缓存失效瞬间,大量请求访问到数据库:比如同一个页面并发量比较大,建议:使用二级缓存策略,当一级缓存失效时,我们允许一个请求去落到数据库上面,更新缓存数据,其他请求依然请求缓存
- 缓存雪崩,大量缓存同一时间失效,导致数据库压力 建议:在缓存过期策略上面
一般组件
- ResponseCache
- Microsoft.Extensions.Caching.Memory.IMemoryCache
- Microsoft.Extensions.Caching.Distributed.IDistributedCache
- EasyCaching
内存缓存和分布式缓存的区别
- 内存缓存可以存储任意的对象
- 分布式缓存的对象需要支持序列化
- 分布式缓存远程请求可能失败,内存缓存不会