把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
标签:缓存,return,redis,Result,key,java,shopById,id From: https://www.cnblogs.com/xiaobaibailongma/p/17765442.html