1.原因:查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库
2.解决:
1)法一:缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存 {key:1, value:null}
优点:简单
缺点:消耗内存,可能会发生不一致的问题
2)法二:使用布隆过滤器
原理:bitmap(位图):相当于是一个以(bit)位为单位的数组,数组中每个单元只能存储二进制数0或1,布隆过滤器可以用于检索一个元素是否在一个集合中
优点:内存占用较少,没有多余key
缺点:实现复杂,存在误判