1、 不存在缓存穿透
缓存穿透是指查询一个一定不存在的数据,由于缓存中没有数据,则会穿透到存储层去查询数据(存储层返回null则不写入缓存),这将导致
这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。使用Guava Cache使用CacheLoader去加载数据,可以看到Guava不允许返回值是null,所以就不存在缓存穿
透的问题。业务实现这必须自己将null包装成对象,比如JDK8中的Optional。
2、缓存容量管理
内存空间是有限的,一些不用的缓存数据需要及时清除,否则容器导致内存溢出。guava最简单一种管理方式是:基于缓存数据个数,让缓存条目始终不能超过一个上限。
<