1.缓存雪崩:缓存挂了,所有请求直接打到数据库了
例如:redis挂了,查询数据的时候发现redis不可用,所有请求直接打到数据库了
解决办法:1.缓存集群高可用,2首先本地一级缓存,其次redis二级缓存,最后数据库
2.缓存击穿:所有请求在缓存中没有找到数据,直接打到数据库了
例如:查询数据的时候,发现redis中没有,再请数据库也没有的情况
解决办法:1.双重验证,2,将查询的空数据也写入到缓存中并设置一个过期时间
3.缓存一致性问题(内存+数据库)
查询数据逻辑:先查缓存,缓存没有则查询数据库,将返回数据写入到缓存,并返回给调用方
修改数据逻辑:先删除缓存中数据,再插入或更新数据库
数据强一致性:读和写数据的逻辑放入队列中串行执行(代码已经实现,用于工作实战中了)