什么是高并发?
高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。
什么是缓存穿透?
缓存穿透是指查询 一个 一定不存在的数据,由于缓存不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成"缓存穿透"。
如何解决缓存穿透?
当多条语句操作同一线程的共享数据时,一个线程对多条语句值执行了一部分,还没执行完,另一个线程参与进来执行,导致共享数据是错误的,也就是说防止其他操作改变数据库中的数据并且导致Redis缓存中的数据不及时更新,使得其他线程访问Redis或者数据库造成错误。
加同步锁synchronized
,对Redis操作的处理类上添加同步锁synchronized
,或者对操作的核心方法上添加同步锁。
//第一种直接在类上添加
public synchronized .... .... {
//第二种 在方法核心上添加
public ... ... (){
synchronized(this){
//判断是否是当前对象在执行当前操作 赋予锁
}
}
}