一.何为缓存击穿
缓存击穿也叫热点key问题,就是一个被高并发所访问并且缓存重建业务(当缓存中的redis有效时间失效,数据需要从数据库中查询)较复杂的key失效,无数的请求需要访问数据库,从而增大了数据库的压力。
1.2 示意图
二.缓存击穿解决方案以及思路
2.1 互斥锁解决思路:使用互斥锁,由一个线程先修改,并在修改的过程中加入互斥锁,对缓存进行数据重新添加,添加完成以后,释放锁
2.1.1互斥锁实现的流程
2.2 设置逻辑逻辑过期时间:对缓存中的数据添加一个过期时间的字段,每次访问都对其进行逻辑判断,如果时间过期,那么就由任意线程加锁,并把这个对缓存中更新数据的任务交给别的线程,自己则返回过期数据给用户,若在此时间访问该热点key的数据的线程则全部返回旧数据,直到互斥锁释放,新的数据覆盖旧的数据。
2.2.1设置逻辑过期时间实现图
2.3 解决方案的流程示意图
三.两种解决方案存在的优缺点