思惟导图-Redis数据结构及应用

缓存穿透-访问key未在DB查询到值,也将空值写进缓存

Windows启动Redis:redis

redis-server.exe  redis.windows.confwindows

redis-cli.exe -h 127.0.0.1 -p 6379缓存

概念

访问一个不存在的key,缓存不起做用,请求会穿透到DB,流量大时DB会挂掉。spa

解决方案

  1. 采用布隆过滤器,使用一个足够大的bitmap,用于存储可能访问的key,不存在的key直接被过滤;
  2. 访问key未在DB查询到值,也将空值写进缓存,但能够设置较短过时时间。

缓存雪崩-设置过时时间

概念

大量的key设置了相同的过时时间,致使在缓存在同一时刻所有失效,形成瞬时DB请求量大、压力骤增,引发雪崩。server

解决方案

能够给缓存设置过时时间时加上一个随机值时间,使得每一个key的过时时间分布开来,不会集中在同一时刻失效。blog

缓存击穿-在访问key以前,采用SETNX(set if not exists)来设置另外一个短时间key来锁住当前key的访问

概念

一个存在的key,在缓存过时的一刻,同时有大量的请求,这些请求都会击穿到DB,形成瞬时DB请求量大、压力骤增。it

解决方案

在访问key以前,采用SETNX(set if not exists)来设置另外一个短时间key来锁住当前key的访问,访问结束再删除该短时间key。io


相关文章
相关标签/搜索