将list缓存到redis中,黑马点评作业

  • Post author:
  • Post category:其他




需求

在这里插入图片描述

黑马点评作业,将商店类型列表请求的结果写入redis中

在这里插入图片描述



方案一 StringRedisTemplate.opsForValue()

将list转为json作为字符串存入redis中

public Result queryForList() {
        String key = "SHOP:TYPE:LIST";
        //查询reids
        String json = stringRedisTemplate.opsForValue().get(key);
        if(json!=null){
            return Result.ok(JSONUtil.toList(json,ShopType.class));
        }
        //查询数据库
        List<ShopType> list= query().orderByAsc("sort").list();

        //存入redis

        stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(list));
        return Result.ok(list);
        

    }



方案二 stringRedisTemplate.opsForList()

作为有序列表存入redis

public Result queryForList() {
        String key = "SHOP:TYPE:LIST";

        //查询redis
        List<String> list =stringRedisTemplate.opsForList().range(key,0,-1);
        //System.out.println(list); //返回的是一个空列表
        if(!list.isEmpty()){
            //redis有数据
            List<ShopType> res =list.stream().
                    //将string转为ShopType
                    map(str-> JSONUtil.toBean(str,ShopType.class)).
                    collect(Collectors.toList());
            return Result.ok(res);
        }
        //查询数据库
        List<ShopType> res= query().orderByAsc("sort").list();
        //存入redis
        res.forEach(shopType -> stringRedisTemplate.opsForList().rightPush(key,JSONUtil.toJsonStr(shopType)));
        return Result.ok(res);
    }



版权声明:本文为qq_41270560原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。