1.缓存穿透(redis和mysql都 不存在的数据)
查询一个不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致每次请求都查数据库。
解决方法:
1.缓存空数据,查询返回的数据为空,仍把这个空结果进行缓存
优点:简单方便
缺点:消耗内存,可能会发生不一致的问题(不存在的数据存在了,但是缓存中未修改)
2.布隆过滤器
bitmap(位图): 相当于是一个以(bit)位为单位的数组,数组中每个单位只能存储二进制0或1
布隆过滤器作用: 布隆过滤器可以用于检索一个元素是否在一个集合中
优点:内存占用较少,没有多余key
缺点:实现复杂,存在误判
3.增强id的复杂度,避免被猜测id规律
4.做好数据的基础格式校验
5.加强用户权限校验
6.做好热点参数的限流
2.缓存击穿(热点访问并重建复杂的key失效)
热点Key问题,就是一个被高并发访问并且