一:给缓存设置过期时间,是保证最终一致性的终极解决方案。
这种方案下,我们可以对存入缓存的数据设置过期时间,所有的写操作以数据库为准,对缓存操作只是尽最大努力即可。也就是说如果数据库写成功,缓存更新失败,那么只要到达过期时间,则后面的读请求自然会从数据库中读取新值然后回填缓存。因此,接下来讨论的思路不依赖于给缓存设置过期时间这个方案。

二:采用延时双删策略

public void use(String key,Object data){
 
        redis.delKey(key);
 
        db.updateData(data);
 
        Thread.sleep(800);
 
        redis.delKey(key);
 
    }
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐