黑马点评--给店铺类型查询添加缓存

controller/ShopTypeController.java 

    /**
     * 店铺分类查询,用于展示首页头部店铺分类
     * @return
     */
    @GetMapping("list")
    public Result queryTypeList() {
        return typeService.queryList();
    }

service/IShopTypeService.java 

     Result queryList();

service/impl/ShopTypeServiceImpl.java 

    @Autowired
    private StringRedisTemplate redisTemplate;

    @Override
    public Result queryList() {
        //使用list取 [0 -1] 代表全部
        //从redis中查询所有分类
        List<String> shopTypeList = redisTemplate.opsForList().range(SHOP_LIST_KEY, 0, -1);
        if (CollectionUtil.isNotEmpty(shopTypeList)) {
            //shopTypeList.get(0) 其实是获取了整个List集合里的元素,0是第0个key
            //查询到,直接返回
            List<ShopType> types = JSONUtil.toList(shopTypeList.get(0), ShopType.class);
            return Result.ok(types);
        }

/*        //使用string 取
        String shopType = redisTemplate.opsForValue().get(SHOP_LIST_KEY);
        if (!StrUtil.isEmpty(shopType)){
            List<ShopType> types= JSONUtil.toList(shopType, ShopType.class);
            return Result.ok(types);
        }*/

        //redis中没有,查询数据库
        List<ShopType> typeList = query().orderByAsc("sort").list();
        //数据库中没有,报错
        if (CollectionUtil.isEmpty(typeList)) {
            return Result.fail("列表信息不存在");
        }

        //list 存
        //数据库中有,存到redis,注意存的位置和上面取的位置一致。
        String jsonStr = JSONUtil.toJsonStr(typeList);
        redisTemplate.opsForList().leftPushAll(SHOP_LIST_KEY, jsonStr);
        return Result.ok(typeList);

/*        //string 存
        redisTemplate.opsForValue().set(SHOP_LIST_KEY,JSONUtil.toJsonStr(typeList);*/
    }

运行,redis数据库中出现数据如下,测试成功。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值