先看历史的缓存是否可用

        //获取缓存的最后一次的更新时间
        String cacheObject = RedisService.getCacheObject(scoreCollectLastScoreTime + userCompetition.getCompetitionId());
        //获取数据库的最后更新时间
        String lastScoreTime = scoringMapper.getLastScoreTime();

不一致则说明缓存已失效,需要从数据库再查一次最新数据;

数据库查询就不赘述,按业务查询到即可;

查到最新的数据后则更新缓存和缓存的更新最后时间;

//不一致则更新缓存和更新最后时间
RedisService.setCacheList(scoreCollect+userCompetition.getCompetitionId(),collect);
RedisService.setCacheObject(scoreCollectLastScoreTime+userCompetition.getCompetitionId(),lastScoreTime);

这样只要数据库没更新,缓存就一直可用,不需要每次更新缓存,也避免了缓存与数据库数据的不一致;