缓存空值
、布隆过滤器
。
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.数据相对固定,实时性低 | 代码维护复杂、缓存空间占用少 |
如对本文有疑问, 点击进行留言回复!!
MongoDB中数据的替换方法实现类Replace()函数功能详解
理解Redis持久化,RDB持久化和AOF持久化的不同处理方式
网友评论