2024-09-03 07:05:25
缓存雪崩
在短时间内,大量缓存key过期,造成大量请求直接冲击数据库,导致数据库承受巨大压力,甚至崩溃。
解决方法:
均匀设置key过期时间,避免大量key在短期内集中过期。
对于访问频率极高的key,考虑不设置过期时间。
缓存击穿
面对高访问频率的热点数据,缓存未能处理请求,导致数据库瞬间承受大量压力。
解决方法:
不为热点数据设置过期时间。
引入互斥锁机制,确保单线程访问数据库并更新缓存,避免重复操作。
缓存穿透
查询数据既不在缓存,也不在数据库中,导致请求连续冲击数据库,加大压力。
解决方法:
缓存空值或预设值,即使结果为空,也进行缓存,设置较短过期时间。
使用布隆过滤器快速判断数据存在性,减少数据库查询压力。
布隆过滤器原理
布隆过滤器是一种概率数据结构,能判断一个元素是否存在于集合中。存在误判率,但不存在数据误判的情况。
布隆过滤器特性
使用多个哈希函数,降低冲突率。
误判率取决于位数组长度和哈希函数数量,但确保真正不存在的数据不会被误判为存在。
布隆过滤器应用
快速判断数据库中数据的有无,避免频繁查询数据库,有效缓解数据库压力。