异步线程处理缓存数据的存取 —— 使用While防止获取未更新的缓存数据或者未更新的DB数据 — updateAdminListDataSequence API

文章描述了一种处理机制,通过在主线程中启动异步线程来更新数据库,并在更新前将用户输入的DTO存入缓存以快速响应。在数据库更新的异步线程中,先清除缓存,然后进行更新,确保后续的while循环等待的是最新的数据,防止返回旧的响应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

while(!appList.isEmpty()){ //while循环会等到异步的DB更新完成(也就是缓存数据不为空)后才返回数据-》解决异步老数据
response.setResponse(appList);
}

在主线程代码内新建一个新的线程,就是创建异步于主线程的异步线程,
异步线程会在主线程执行完毕之后再执行。

在异步执行db更新之前先将用户传入的dto直接存入缓存返回给用户,作为快速反馈

在更新db的异步线程里
将缓存的清空放在db更新线程之前,
缓存的更新放在db更新之后,
这样再get方法里用while等待缓存的更新就可以避免获取到未更新的老旧数据
appList.clear(); // 放在db更新的线程之前(controller方法进入时)保证success时一定是空

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值