缓存击穿:缓存中一个热点数据过期或失效时,由于该数据非常受欢迎,会有大量请求直接打到数据库上,导致数据库负载增大、相应变慢甚至瘫痪。

解决方式:

  1. 互斥锁

在查询数据库之前首先获取分布式锁,更新redis之后再释放锁,可以保证数据的强一致性。

redis-lock.png

优缺点:
优点:强一致性
缺点:性能差

  1. 逻辑过期

数据本身不设置过期时间,而是添加一个过期时间字段,发现数据过期后先获取分布式锁,获取到就开一个新线程来更新数据,旧线程直接返回过期数据,新线程更新redis数据和过期时间,并释放分布式锁。

redis-logic-expire.png

优缺点:
优点:线程不等待,性能优良
缺点:存在过期数据

标签: Redis, 知识点

添加新评论