Java - Redis 高并发下的缓存穿透问题

什么是高并发?

高并发(High Concurrency)通常是指通过设计保证系统能够同时并行处理很多请求。通俗来讲,高并发是指在同一个时间点,有很多用户同时的访问同一 API 接口或者 Url 地址。它经常会发生在有大活跃用户量,用户高聚集的业务场景中。

什么是缓存穿透?

缓存穿透是指查询 一个 一定不存在的数据,由于缓存不命中时需要从数据库查询,查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到数据库去查询,造成"缓存穿透"。

如何解决缓存穿透?

当多条语句操作同一线程的共享数据时,一个线程对多条语句值执行了一部分,还没执行完,另一个线程参与进来执行,导致共享数据是错误的,也就是说防止其他操作改变数据库中的数据并且导致Redis缓存中的数据不及时更新,使得其他线程访问Redis或者数据库造成错误。

加同步锁synchronized,对Redis操作的处理类上添加同步锁synchronized,或者对操作的核心方法上添加同步锁。

//第一种直接在类上添加
public synchronized ....  .... {

	//第二种 在方法核心上添加
	public ... ... (){
		synchronized(this){
		//判断是否是当前对象在执行当前操作 赋予锁
		}
	}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值