当前位置: 首页> 默认分类> 正文

缓存失效策略案例

1. 定时过期:

- 定义:缓存中的数据在添加时设置一个固定的过期时间,到期后自动失效。

- 案例:在Redis中设置键值对时,可以指定一个过期时间,例如`EXPIRE key seconds`。

2. 访问时过期(惰性失效):

- 定义:只有在访问某个数据时,才检查它是否过期。

- 案例:当用户请求数据时,先检查该数据是否过期,如果过期则重新从源头获取并更新缓存。

3. 淘汰策略(基于LRU、LFU等):

- LRU (Least Recently Used) 最近最少使用:淘汰最近最少被访问的缓存项。

- LFU (Least Frequently Used) 最少频率使用:淘汰一段时间内访问次数最少的缓存项。

- 定义:这些策略通常用于当缓存空间满了时,需要腾出空间来存放新的数据。

4. 驱逐策略(基于布隆过滤器):

- 定义:使用布隆过滤器来存储即将失效的键,当检测到某个键将要失效时,提前移除该键,从而避免缓存击穿问题。

- 案例:在面临恶意请求攻击时,使用布隆过滤器可以有效减少数据库的压力。

5. 加锁策略:

- 定义:在访问数据库时加锁,确保同一时刻只有一个线程访问数据库,从而保护后端系统不受高并发压力影响。

- 案例:使用Redis的分布式锁或者数据库的行锁来控制对关键资源的访问。

6. 无效Key保存策略:

- 定义:将失效的Key保存为null值的形式,在后续的请求中可以直接忽略这些无效的Key,避免反复查询数据库。

- 案例:对于已知会频繁失效的Key,可以将其保存为null,并通过异步任务定期刷新这些Key对应的Value。

在实际应用中,开发者会根据具体场景和需求选择合适的缓存失效策略,有时还会结合多种策略来提高系统的稳定性和性能。