高并发场景解决思路(2)
高并发场景解决思路(2)缓存
缓存特征
命中率:命中数/命中数+未命中数
最大元素(空间)
清空策略:FIFO,LFU,LRU,过期时间,随机等。
- FIFO:先进先出策略,比较元素的进入缓存的时间,最先进入缓存的数据在缓存空间不足情况最先被清除,优先保障最新的数据,适合数据实时性要求高的场景。
- LFU:最少使用策略,比较元素的命中次数,适合保障高频数据有效性的场景
- LRU:最近最少使用策略, 比较元素最近被get的使用时间,适合保证热点数据有效性的场景
- 过期时间:过期即清理
业务场景
- 适合读多写少和实时性低的场景
缓存分类
- 本地缓存:Guava Cache,成员变量,静态变量
- 分布式缓存:Redis
主要介绍一下Redis在高并发下可能存在的问题:
缓存一致性
缓存穿透问题
- 缓存空对象,空集合等,避免大量请求穿透到数据库
- 单独过滤处理,对所有key可能为空的数据统一存放,在请求前拦截
- 缓存集中失效可能导致缓存雪崩,因此可以使缓存失效时间错开。
- 流量限流,熔断等方法