1. 缓存击穿(穿透)

1.1 定义

缓存穿透: 查询一个在缓存内必然不存在的数据。例如查询一篇文章的ID,这个ID在缓存和DB里面都是必然不存在的。如果类似这样的查询请求特别多,就会给DB带来很大的压力。

1.2 解决

使用BITMAP来过滤:最常见的则是采用布隆过滤器(bloom filter),将所有可能存在的数据哈希到一个足够大的bitmap中,一个一定不存在的数据会被 这个bitmap拦截掉,从而避免了对底层存储系统的查询压力。在JAVA里面使用布隆过滤器,可以使用guava里面的bloomFilter。如果需要基本的bitmap数据结构,可以使用util下面的Bi......