JAVA全系列 教程
3762个小节阅读:7095.4k
目录
C语言快速入门
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
在秒杀模块添加向缓存添加秒杀商品的方法:
xxxxxxxxxx
public interface SeckillService {
/**
* 将一个秒杀商品保存到redis中
* @param seckillGoods 秒杀商品对象
*/
void addRedisSeckillGoods(SeckillGoods seckillGoods);
}
public class SeckillServiceImpl implements SeckillService {
@Autowired
private SeckillGoodsMapper seckillGoodsMapper;
@Override
public void addRedisSeckillGoods(SeckillGoods seckillGoods) {
redisTemplate.boundHashOps("seckillGoods").put(seckillGoods.getGoodsId(),seckillGoods);
}
}
修改查询秒杀商品详情方法
xxxxxxxxxx
@Override
public SeckillGoods findSeckillGoodsByRedis(Long goodsId) {
// 1.从redis中查询秒杀商品
SeckillGoods seckillGoods = (SeckillGoods) redisTemplate.boundHashOps("seckillGoods").get(goodsId);
// 2.如果查到商品,返回
if (seckillGoods != null) {
System.out.println("从redis中查询秒杀商品");
return seckillGoods;
} else {
// 3.如果没有查到商品,从数据库查询秒杀商品
QueryWrapper<SeckillGoods> queryWrapper = new QueryWrapper();
queryWrapper.eq("goodsId",goodsId);
SeckillGoods seckillGoodsMysql = seckillGoodsMapper.selectOne(queryWrapper);
System.out.println("从mysql中查询秒杀商品");
// 4.如果该商品不在秒杀状态,抛出异常
Date now = new Date();
if (seckillGoodsMysql == null
|| now.after(seckillGoodsMysql.getEndTime())
|| now.before(seckillGoodsMysql.getStartTime())
|| seckillGoodsMysql.getStockCount() <=0
) {
return null;
}
// 5.如果该商品在秒杀状态,将商品保存到redis,并返回该商品
addRedisSeckillGoods(seckillGoodsMysql);
return seckillGoodsMysql;
}
}
测试商品丢失后,用户是否能查询商品详情。