Redis缓存名词解析

内存穿透的概念以及解决方案

内存穿透是指在缓存中无法找到所需数据,而导致请求直接穿透到数据库或其他后端存储系统,造成无谓的资源浪费和性能问题。
通常,在缓存系统中,会将经常被访问的数据缓存下来,以提高数据访问的速度和效率。但如果有些请求所需要的数据在缓存中不存在,而且也不存在于后端存储系统中,那么这些请求就会直接穿透到后端存储系统中进行查询,这种情况就叫做内存穿透。
内存穿透会导致数据库或其他后端存储系统遭受过多的请求,导致性能下降和资源浪费。为了避免内存穿透,可以采取一些缓存优化策略,例如预热缓存、设置缓存过期时间、使用布隆过滤器等等。

缓存击穿的概念以及解决方案

缓存击穿是指在高并发情况下,一个热点数据的缓存失效后,大量请求同时涌入数据库或其他后端存储系统,导致后端系统崩溃或性能下降的现象。
通常情况下,缓存系统会将热点数据缓存起来,以提高访问速度和性能。但如果这些热点数据的缓存在某个时刻失效,而此时又有大量请求同时访问这些数据,那么这些请求就会直接穿透到后端存储系统中,导致后端系统的负载剧增,甚至崩溃。
为了避免缓存击穿,可以采用以下策略:
设置合理的缓存过期时间,避免缓存失效后热点数据一下子全部穿透到后端系统。
使用互斥锁或分布式锁等技术,避免多个请求同时查询同一条记录。
针对热点数据,可以采用预热策略,提前将数据加载到缓存中,避免缓存失效时大量请求同时涌入后端系统。
对于非常热的数据,可以采用主备缓存或集群缓存的方式,将请求分散到多个缓存节点上,提高缓存系统的可用性和稳定性。

缓存雪崩的概念以及解决方案

缓存雪崩是指在缓存系统中,大量缓存数据在同一时间段内失效,导致大量请求直接穿透到后端存储系统中,导致后端系统负载剧增,甚至崩溃的现象。
通常情况下,缓存系统中的缓存数据都是有过期时间的,一旦缓存数据过期或失效,系统会重新从后端存储系统中查询数据并重新缓存。但是,如果缓存系统中的大量数据在同一时间段内失效,那么后端存储系统会接受大量的请求,导致负载剧增,甚至崩溃。
为了避免缓存雪崩,可以采用以下策略:
设置合理的缓存过期时间,避免大量缓存数据在同一时间段内失效。
对于热点数据,可以采用分布式锁或队列等技术,避免大量请求同时涌入后端系统。
可以使用缓存预热策略,提前将数据加载到缓存中,避免缓存失效时大量请求同时涌入后端系统。
可以采用多级缓存的方式,将缓存数据分散到多个缓存节点中,避免某个节点失效影响整个系统。
可以采用降级策略,当缓存失效时,可以暂时使用备份方案,如数据库直接提供服务等。