穿透无中生有key,布隆过滤null隔离
击穿热点key过期,锁与延时解难题
雪崩大量过期key,分时加锁缓多级
面试必考三兄弟,监控限流来保底
在这段描述中,“key”通常指的是在缓存系统(如Redis)中用于存储和检索数据的唯一标识符。在缓存系统中,数据通常以键值对(key-value pair)的形式存储,其中“key”是用于查找特定数据的标识符,“value”是与该key关联的数据。
以下是针对每个描述点的解释:
- 穿透无中生有key:
- 当缓存中不存在的key被大量请求时,这些请求都会直接穿透到数据库层,给数据库带来巨大压力。这通常是因为攻击者故意请求不存在的key。
- 解决方法之一是使用布隆过滤器(Bloom Filter)来过滤不存在的key,从而减少对数据库的无效查询。
- 布隆过滤null隔离:
- 布隆过滤器是一个空间效率极高的概率型数据结构,它用来判断一个元素是否在一个集合中。当查询一个key时,可以先用布隆过滤器判断该key是否可能存在于缓存中,如果不存在,则直接返回null或错误信息,避免了对数据库的无效查询。
- 击穿热点key过期:
- 当缓存中的某个热点key(即被频繁访问的key)过期时,大量请求会同时穿透到数据库层,造成数据库压力骤增。
- 解决方法之一是使用互斥锁或分布式锁来确保只有一个线程或进程去查询数据库并更新缓存,其他请求则等待缓存更新完成。另外,也可以设置缓存的过期时间时加入一定的随机性,避免大量key在同一时间过期。
- 锁与延时解难题:
- 在解决击穿问题时,使用锁可以确保同一时间只有一个请求去查询数据库。而延时解锁或延时双删策略可以确保在更新缓存后的一段时间内,即使有新的请求到来,也不会立即穿透到数据库。
- 雪崩大量过期key:
- 当缓存中大量key同时过期时,会导致大量请求直接穿透到数据库层,引发数据库雪崩。
- 解决方法可以是采用分时加载策略,即将这些key的过期时间分散开来,避免它们在同一时间过期。另外,也可以使用熔断器和降级机制来减轻数据库的压力。
- 分时加锁缓多级:
- 这可能是指通过分时加载和加锁策略来逐步加载缓存,同时结合多级缓存(如内存缓存和分布式缓存)来缓冲请求,减少对数据库的冲击。
- 面试必考三兄弟:
- 这可能指的是在面试中经常会被问到的与缓存相关的三个重要概念或问题,具体是哪三个可能因面试官和公司的不同而有所差异。
- 监控限流来保底:
- 对于缓存系统的稳定性和可靠性,监控和限流是非常重要的。通过监控可以及时发现潜在的问题,而限流则可以防止系统因过多的请求而崩溃。这些措施为系统的稳定运行提供了保障。
在这些描述中,“key”始终是指缓存系统中的唯一标识符,它用于存储和检索数据。在解决各种缓存问题时,对key的管理和操作是关键。