Redis p37
标题题目:给店铺类型查询业务添加缓存
缓存作用:减少访问数据库次数,提高运行效率
查询流程:先访问缓存,如果缓存有,则直接返回,如果没有再去查数据库,查到以后将数据放入缓存中。
controller
@RestController
@RequestMapping("/shop-type")
public class ShopTypeController {
@Resource
private IShopTypeService typeService;
@GetMapping("list")
public Result queryTypeList() {
// List<ShopType> typeList = typeService
// .query().orderByAsc("sort").list();
//基于redis完成,由service层去处理
return typeService.queryTypeList();
}
}
接口层略
ShopTypeServiceImpl实现接口
@Service
public class ShopTypeServiceImpl extends ServiceImpl<ShopTypeMapper, ShopType> implements IShopTypeService {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Override
public Result queryTypeList() {
// 1、查询redis缓存
String shopTypeJson = stringRedisTemplate.opsForValue().get(LOGIN_SHOP_TYPE_KEY);
// 2、判断缓存是否存在
if (StrUtil.isNotBlank(shopTypeJson)) {
// 3、存在,直接返回
return Result.ok(JSONUtil.toList(shopTypeJson, ShopType.class));
}
// 4、不存在,查询数据库
List<ShopType> typeList = this.list();
// 5、不存在,返回错误
if (typeList == null || typeList.isEmpty()) {
// 注意:this.list() 永远不会返回 null,但可能返回空集合
return Result.fail("店铺类型为空");
}
// 6、存在,写入redis
stringRedisTemplate.opsForValue().set(LOGIN_SHOP_TYPE_KEY, JSONUtil.toJsonStr(typeList));
// 7、返回
return Result.ok(typeList);
}
}
Redis缓存优化查询性能
2078

被折叠的 条评论
为什么被折叠?



