判断redis是否命中的那点逻辑,是不是放到RedisDao里面比较好?
那样Service只要面向RedisDao即可,不需要再去关心SeckillDao了,原代码如下:
public Exposer exportSeckillUrl(long seckillId) {
//优化点:缓存优化 超时的基础上维护一致性
//1.访问redis
Seckill seckill = redisDao.getSeckill(seckillId);
if (seckill == null) {
//2.访问数据库
seckill = getById(seckillId);
if (seckill == null) {
return new Exposer(false, seckillId);
} else {
//3.放入redis
redisDao.putSeckill(seckill);
}
}