public ResultVo order(Integer seasonId){
//获取赛季排行榜的所有数据
(1) List<OrderVo> orderVos = tArenaScoreMapper.selectAll(seasonId);
//添加到redis中
Set<ZSetOperations.TypedTuple<String>> tuples = new HashSet<>();
for (OrderVo o:orderVos) {
DefaultTypedTuple<String> tuple = new DefaultTypedTuple<String>(o.getUsername(),Double.valueOf(o.getScore()));
tuples.add(tuple);
}
Long num = redisTemplate.opsForZSet().add(String.valueOf(seasonId), tuples);
//从redis中取出
(2) return redisTemplate.opsForZSet().reverseRangeWithScores;
}
我的order方法是只查询显示,积分更新不在我这里操作。
不解的是:
1.所有用户积分不变时,方法被调用,我还是会执行(1)操作,然后去添加redis,这样mysql数据跟redis数据是一样的,添加redis时,新老数据怎么替换?是重新全部覆盖替换呢?还是redis会自动判断数据相等不替换呢?
2.有的用户积分变时,方法被调用,我执行(1)操作,然后去添加redis,这样mysql数据跟redis数据是不一样的,添加redis时,新老数据怎么替换?