核心 Redis缓存穿透/击穿/雪崩解决方案
Redis缓存穿透/击穿/雪崩 在平常开发时,我们一般都会引入redis,memcache等这些缓存解决方案来做一些热点数据存储来减轻数据库的压力,相较于数据库的磁盘IO,类似redis这种内存型数据库,内存的IO效率要比磁盘IO效率高几个数量级。但是在真正面对高并发时,如果处理不当redis也会出现一些问题。这里就说一下实际场景中可能会出现的缓存穿透,缓存击穿,缓存雪崩。 缓存穿透:比如说,一个用户的基本信息(缓存key为uid)或订单的信息(缓存key为order_id),缓存或数据库里都没有这个uid或order_id的信息,但是如果有请求要获取这个信息,那么逻辑处理时就会跨过缓存这一层去查数据库,如果这样的请求短时间内非常多可能会压垮数据库。 缓存击穿:比如说,订单的信息(缓存key为order_id)在缓存中有过期时间,如果在特定的时间这个订单信息在缓存中已经过期但是尚未从数据库查出最新的信息set到缓存上,恰好这个时候大并发请求过来了,那么这些请求的逻辑处理也会跨过缓存直接查询数据库,这个大并发的查询可能会压垮数据库。 缓存雪崩:上面说到缓存击穿是一个....