Appearance
缓存策略
常用的缓存淘汰策略有以下
- 先进先出(FIFO)
- 最少使用(LFU)
- 过期时间(LRU)
概念
缓存穿透:缓存穿透是指用户请求的数据在缓存和数据库中都不存在。例如恶意攻击者发起 id 为“-1”的数据或 id 为特别大不存在的数据,如果不加以校验,请求会透过缓存直接去访问数据库,导致数据库压力过大。
缓存击穿:缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。
缓存雪崩:缓存雪崩是指缓存中的大批量 key 同一时段过期,而该时段内查询数据量巨大,引起数据库压力过大甚至 down 机。和缓存击穿不同的是,缓存击穿指并发同一个 key。