RedissonLocalCachedMap.clear()存在延迟及同步方法咨询
RedissonLocalCachedMap.clear() 延迟问题说明
你的观察是准确的,RedissonLocalCachedMap的clear()方法确实是异步执行的:
- 调用
clear()后,Redisson会先向远程Redis节点发送清空指令,同时异步触发本地缓存的清空操作,但方法会立即返回,不会等待所有节点(包括本地缓存)的清空操作完成。 - 本地缓存的清空和远程Redis的同步存在短暂时间差,这就导致调用后立即读取可能还能拿到旧数据。
要实现等待清空完成后再返回的同步效果,可以使用Redisson提供的异步方法结合阻塞等待:
localCachedMap.clearAsync().get();
clearAsync()会返回一个RFuture对象,调用其get()方法会阻塞当前线程,直到远程Redis和本地缓存的清空操作全部完成,之后再执行后续读取逻辑就能保证拿到空缓存。
另外,也可以通过配置LocalCachedMap的缓存同步策略优化这类场景,但最直接的同步方案还是使用clearAsync().get()强制等待操作完成。
内容的提问来源于stack exchange,提问作者Saeid Nourian
相关产品推荐
相关产品推荐

