微信登录

Redis要避免的问题 - 缓存击穿

Redis要避免的问题 - 缓存击穿

问题

有key非常热点,非常频繁,集中式高并发
key在失效瞬间,击穿缓存 + 直接请求mysql数据库
像凿开了一个洞

解决

方法1:key永不过期
方法2:互斥锁,等待第一个请求构建缓存完成后,再释放锁
小例子:

  1. //设置“锁”
  2. if(redis.set("lock", "1", "EX 180", "NX")){
  3. //业务逻辑
  4. .......
  5. //执行完业务逻辑后,释放锁
  6. redis.delete("lock");
  7. }