public class TrendServiceImpl implements TrendService { @Autowired private TrendDao trendDao; @Autowired private RedisTemplate<String, List<LotteryStatisticsPrizeEntity>> redisTemplate; @Override public List<LotteryStatisticsPrizeEntity> getTrend() { String key = "trend"; List<LotteryStatisticsPrizeEntity> trendList = redisTemplate.opsForValue().get(key); if (trendList != null) { return trendList; } Date weekBegin = getWeekBegin(); trendList = trendDao.selectTrend(weekBegin); redisTemplate.opsForValue().set(key, trendList, Duration.ofMinutes(10)); return trendList; } private Date getWeekBegin() { Calendar cal = Calendar.getInstance(); cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY); cal.set(Calendar.HOUR_OF_DAY, 0); cal.set(Calendar.MINUTE, 0); cal.set(Calendar.SECOND, 0); cal.set(Calendar.MILLISECOND, 0); return cal.getTime(); }
时间: 2024-03-29 20:39:16 浏览: 63
ssm相关使用教程及maven web 使用步骤
这段代码是一个 Java 类中的一个方法,它实现了 TrendService 接口中的 getTrend() 方法。该方法使用了 Autowired 注解注入了 TrendDao 和 RedisTemplate 对象。
在该方法中,首先定义了一个 key 变量,用于存储 Redis 中存储数据的键。然后调用 RedisTemplate 的 opsForValue() 方法获取 ValueOperations 对象,通过该对象的 get() 方法从 Redis 中获取数据。如果获取到了数据,直接返回该数据即可。
如果 Redis 中没有数据,则调用 getWeekBegin() 方法获取当前日期所在周的周一时间戳,然后调用 trendDao 的 selectTrend() 方法查询该周的数据。查询结果存储在 trendList 变量中。
接下来,将查询结果存储到 Redis 中,设置过期时间为 10 分钟。最后返回查询结果。
总体来说,该方法的作用是获取当前日期所在周的数据,如果 Redis 中存在该数据则直接返回,否则从数据库中查询数据,并将查询结果存储到 Redis 中。这样可以提高数据访问效率。
阅读全文