缓存击穿:缓存中一个热点数据过期或失效时,由于该数据非常受欢迎,会有大量请求直接打到数据库上,导致数据库负载增大、相应变慢甚至瘫痪。
解决方式:
- 互斥锁
在查询数据库之前首先获取分布式锁,更新redis之后再释放锁,可以保证数据的强一致性。
优缺点:
优点:强一致性
缺点:性能差
- 逻辑过期
数据本身不设置过期时间,而是添加一个过期时间字段,发现数据过期后先获取分布式锁,获取到就开一个新线程来更新数据,旧线程直接返回过期数据,新线程更新redis数据和过期时间,并释放分布式锁。
优缺点:
优点:线程不等待,性能优良
缺点:存在过期数据