缓存击穿
造成原因:少量KEY过期造成并发访问数据库。
解决:第一个线程获取key为空后,第一个(redis单进程单实例)设置setnx获取锁,并取数据库查询数据,查询完成后放入redis。第二个等待尝试获取锁并查询redis信息。
缓存穿透
造成原因:查询信息根本不在数据库中存在
解决:布隆过滤器(只能增加不能删除)、布谷鸟过滤器。将查询后的值添加到redis中并设置为指定value作为无效值(黑客访问大量无效数据,占用内存)。
缓存雪崩
造成原因:大量key失效造成大量访问到达DB
解决:随机设置过期时间,同时依赖缓存击穿。