缓存空值
、布隆过滤器
。Object nullValue = new Object(); try { Object valueFromDB = getFromDB(uid); //从数据库中查询数据
if (valueFromDB == null) { cache.set(uid, nullValue, 10); //若是从数据库中查询到空值,就把空值写入缓存,设置较短的超时时间
} else { cache.set(uid, valueFromDB, 1000); } } catch(Exception e) { // 出现异常也要写入缓存
cache.set(uid, nullValue, 10); }
数据命中不高
、 数据相对固定
、 实时性低
(一般是数据 集较大
)的应用场景,代码维护较为复杂,可是缓存空间占用少。为何呢?由于布隆过滤器不支持删除元素,一旦数据变化,并不能及时的更新布隆过滤器。方案 | 适用场景 | 维护成本 |
---|---|---|
缓存对象 | 1. 数据命中不高 2. 数据频繁变化,实时性高 | 代码维护点单、须要过多的缓存空间,数据一致性须要本身实现 |
布隆过滤器 | 1. 数据命中不高 2.数据相对固定,实时性低 | 代码维护复杂、缓存空间占用少 |