击穿
在**高并发**请求下,key过期或者LRU,LFU进行了清除。导致大量请求并发访问数据库
阻止并发到数据库
1,get key 获得key
2,setnx 设置锁
3-1,ok,去 DB 获取到锁,去数据库查
3-2,false,sleep -> 1 没有获取到锁,休眠一段时间,重复一步骤。或者设置key存在后直接返回
zookeeper
穿透
从业务接收查询的是数据库中根本不存在的数据
布隆过滤器,位图存储是否存在数据,存在就去查库(有小于1%穿透可能),不存在就直接返回。但是不能删除,可以使用布谷鸟过滤器。或者设置空key,直接返回,不到达布隆
雪崩
大量的key同时失效,间接造成大量的访问到达DB
时点性无关,使用随机过期时间
否则在零点进行大批量失效后,业务层延时零点,在数据换血后,进行访问。或者强依赖击穿方案,设置锁,获取到锁,查库,设置值。
缓存穿透、击穿与雪崩
本文探讨了高并发场景下缓存系统面临的三大挑战:击穿、穿透和雪崩现象。击穿指缓存失效导致大量请求直接访问数据库;穿透则是请求的数据在数据库中不存在;雪崩则因大量缓存同时失效引发。文章提出了相应的解决方案,如使用锁机制、布隆过滤器和随机过期时间等。
1419

被折叠的 条评论
为什么被折叠?



