緩存空值
、布隆過濾器
。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.數據相對固定,實時性低 | 代碼維護複雜、緩存空間佔用少 |