java——redis随笔——实战——商户查询缓存

发布时间 2023-10-15 11:32:40作者: 小白龙白龙马

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

把key做了下代码优化:

 

    /**
     * 根据id查询商铺信息
     * @param id 商铺id
     * @return 商铺详情数据
     */
    @Override
    public Result queryById(Long id) {

        // key要唯一 就用id
        String key = CACHE_SHOP_KEY + id;

        // 1 从redis查询商铺缓存  以店铺ID为key
        String shopJson = stringRedisTemplate.opsForValue().get(key);

        // 2 判断是否存在
        // null "" "\t\n" 都会被认为是false
        if (StrUtil.isNotBlank(shopJson)) {
            // 3 存在直接返回  JSON格式变回类对象
            Shop shop = JSONUtil.toBean(shopJson, Shop.class);
            return Result.ok(shop);
        }

        // 4 shop不存在 根据id查询数据库
        Shop shopById = iShopService.getById(id);

        // 5 不存在 返回错误
        if (shopById == null){
            return Result.fail("该商铺不存在");
        }

        // 6 存在 写入redis
        stringRedisTemplate.opsForValue().set(key,JSONUtil.toJsonStr(shopById));

        // 7 返回
        return Result.ok(shopById);
    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1