黑马程序员技术交流社区
标题: 【郑州校区】Java之品优购课程讲义_day10(3) [打印本页]
作者: 谷粒姐姐 时间: 2018-9-19 15:14
标题: 【郑州校区】Java之品优购课程讲义_day10(3)
缓存品牌和规格数据
4.1 需求分析
将商品分类数据、品牌数据、和规格数据都放入 Redis 存储。
(1)当用户进入运营商后台的商品分类页面时,将商品分类数据放入缓存(Hash)。以分 类名称作为 key ,以模板 ID 作为值
(2)当用户进入运营商后台的模板管理页面时,分别将品牌数据和规格数据放入缓存
(Hash)。以模板 ID 作为 key,以品牌列表和规格列表作为值。
4.2 缓存商品分类数据
将商品分类表存入缓存 pinyougou-sellergoods-service 工程需要引入 pinyougou-common 工程依赖。
修改 pinyougou-sellergoods-service 的 ItemCatServiceImpl.java,添加 redisTemplate
[AppleScript] 纯文本查看 复制代码
@Autowired
private RedisTemplate redisTemplate;
/**
* 根据上级 ID 查询列表
*/
@Override
public List<TbItemCat> findByParentId(Long parentId) { TbItemCatExample example1=new TbItemCatExample(); Criteria criteria1 = example1.createCriteria(); criteria1.andParentIdEqualTo(parentId);
//每次执行查询的时候,一次性读取缓存进行存储 (因为每次增删改都要执行此方法)
List<TbItemCat> list = findAll();
for(TbItemCat itemCat:list){ redisTemplate.boundHashOps("itemCat").put(itemCat.getName(),
itemCat.getTypeId());
}
System.out.println("更新缓存:商品分类表");
4.1 缓存品牌和规格列表数据
(1)修改 pinyougou-sellergoods-service 的 TypeTemplateServiceImpl.java
[AppleScript] 纯文本查看 复制代码
@Autowired
private RedisTemplate redisTemplate;
/**
* 将数据存入缓存
*/
private void saveToRedis(){
//获取模板数据
List<TbTypeTemplate> typeTemplateList = findAll();
//循环模板
for(TbTypeTemplate typeTemplate :typeTemplateList){
//存储品牌列表
List<Map> brandList = JSON.parseArray(typeTemplate.getBrandIds(),
Map.class);
redisTemplate.boundHashOps("brandList").put(typeTemplate.getId(),
brandList);
//存储规格列表
List<Map> specList = findSpecList(typeTemplate.getId());//根据模板 ID 查询
规格列表
redisTemplate.boundHashOps("specList").put(typeTemplate.getId(),
specList);
}
}
(2)在查询分页方法(findPage) 时调用此方法
[AppleScript] 纯文本查看 复制代码
public PageResult findPage(TbTypeTemplate typeTemplate, int pageNum, int pageSize) {
......
saveToRedis();//存入数据到缓存
return new PageResult(page.getTotal(), page.getResult());
}
这样在增删改后会自动调用该方法.
4.1 加载缓存数据
启动 redis ,运行运营商管理后台,打开商品分类和模板管理页,即可将数据放入缓存中。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |