2
@Cacheable(value = "moviesCache")
public Collection<Movies> getMovies() {
    Collection<Movies> moviesList = new ArrayList<>();
    
    //populate moviesList by going to the DB within a Try/Catch. Return an empty list if it fails or 
    //a list of movies if it doesn't

    return moviesList;
}

@CacheEvict("moviesCache")
public void resetMoviesCache() {

}

取上述方法用于缓存和删除缓存变量moviesCache。我当前的逻辑在启动时调用 getMovies 方法,它工作正常。然后我通过逐出它来刷新moviesCache 变量,并通过按顺序调用resetMoviesCache 和getMovies 方法来重新生成它。这也很好。

这就是问题所在。如果发生刷新并且 db 操作失败导致代码返回空数组,则缓存现在为空。有没有办法保留故障前存储的原始缓存并在返回空数组时恢复到它?我期待从回复中学习。谢谢你。

4

0 回答 0