判斷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); ? ?
} ? ?
} ? ?
2017-02-28
主要是這段是dao層的邏輯,放在service里面感覺不太好。