做网站需要填什么,大连专业html5网站建设,扬州住房和建设局网站,建设工程信息网官网重庆缓存穿透是指在缓存中查询大量不存在的数据#xff0c;导致无效请求直接落到后端数据库#xff0c;从而造成数据库负载过高#xff0c;甚至引起数据库超负荷的情况。缓存穿透通常发生在恶意攻击或非法请求的情况下#xff0c;攻击者故意查询不存在的数据#xff0c;导致大…缓存穿透是指在缓存中查询大量不存在的数据导致无效请求直接落到后端数据库从而造成数据库负载过高甚至引起数据库超负荷的情况。缓存穿透通常发生在恶意攻击或非法请求的情况下攻击者故意查询不存在的数据导致大量无效请求直接访问数据库。
解决方案
不存在的key也维护
对于那些经常被查询但实际不存在的数据可以将其作为特殊的缓存对象存储在缓存中即使这些数据在后端数据库中不存在。 同时为了避免缓存数据过多积累可以为这些不存在的key设置较短的过期时间确保缓存中的无效数据会被及时清理。 使用布隆过滤器
布隆过滤器是一种快速判断元素是否存在于集合中的数据结构。可以将大量的缓存键放入布隆过滤器中当查询请求到来时先通过布隆过滤器判断该key是否存在。 如果布隆过滤器判断key不存在直接返回缓存未命中避免无效的数据库查询。如果布隆过滤器判断key可能存在再去查询缓存或数据库进行进一步的验证。 入口校验
在应用程序的入口处进行参数校验对于非法的请求直接拦截并返回错误信息避免无效请求进入后端数据库。 可以校验请求的参数是否符合规范例如检查请求的key是否为空或长度是否合法对于非法的请求直接拒绝。 实际案例
在一个在线商品查询的系统中用户可以通过关键字搜索商品信息。攻击者利用该功能通过查询大量不存在的商品关键字导致大量无效的查询请求直接访问后端数据库造成数据库超负荷。
为了解决这个问题系统采取了以下措施
不存在的key维护对于经常被查询但实际不存在的商品关键字系统将其作为特殊的缓存对象存储在Redis中并设置了较短的过期时间确保缓存中的无效数据会被及时清理。 布隆过滤器将商品关键字放入布隆过滤器中对于查询请求先通过布隆过滤器判断关键字是否可能存在如果可能不存在则直接返回缓存未命中避免无效的数据库查询。 入口校验在接收查询请求时先进行参数校验对于非法的商品关键字请求直接拦截并返回错误信息避免无效请求进入后端数据库。 通过以上措施系统成功解决了缓存穿透问题保证了数据库的稳定性和性能。同时系统在后续的设计中对于其他可能出现缓存穿透的关键数据也采取了类似的策略进行处理提高了系统的安全性和可靠性。