redis-缓存击穿\穿透\雪崩

击穿

**高并发**请求下,key过期或者LRU,LFU进行了清除。导致大量请求并发访问数据库
阻止并发到数据库
1get key  获得key
2,setnx    设置锁
3-1,ok,去 DB  获取到锁,去数据库查
3-2falsesleep  -> 1   没有获取到锁,休眠一段时间,重复一步骤。或者设置key存在后直接返回

zookeeper

穿透

从业务接收查询的是数据库中根本不存在的数据
布隆过滤器,位图存储是否存在数据,存在就去查库(有小于1%穿透可能),不存在就直接返回。但是不能删除,可以使用布谷鸟过滤器。或者设置空key,直接返回,不到达布隆

雪崩

大量的key同时失效,间接造成大量的访问到达DB
时点性无关,使用随机过期时间
否则在零点进行大批量失效后,业务层延时零点,在数据换血后,进行访问。或者强依赖击穿方案,设置锁,获取到锁,查库,设置值。

你可能感兴趣的:(redis)