文章目录
redis使用案例
根据目录数据
@RestController("userDishController")
@RequestMapping("/user/dish")
@Slf4j
@Api(tags = "C端-菜品浏览接口")
public class DishController {
@Autowired
private RedisTemplate redisTemplate;
@Autowired
private DishService dishService;
/**
* 根据分类id查询菜品
* @param categoryId
* @return
*/
@GetMapping("/list")
@ApiOperation("根据分类id查询菜品")
public Result<List<DishVO>> list(Long categoryId){
//构造redis中的key,规则:dish_分类id
String key = "dish_" +categoryId;
//查询redis是否存在菜品数据
List<DishVO> list = (List<DishVO>) redisTemplate.opsForValue().get(key);
if (list != null && list.size() > 0) {
return Result.success(list);
}
Dish dish = new Dish();
dish.setCategoryId(categoryId);
dish.setStatus(StatusConstant.ENABLE);
//查询数据库
list = dishService.listWithFlavor(dish);
redisTemplate.opsForValue().set(key,list);
return Result.success(list);
}
}
此时,如果进行增删改时,redis的数据也要变化
//新增,只需删除对应的目录id,其他可以不用
String key = "dish" + dishDTO.getCategoryId();
redisTemplate.delete(key);
//删除菜品,所有都删除
Set keys = redisTemplate.keys("dish_*");
redisTemplate.delete(keys)
//抽取成方法
private void cleanCache(String pattern) {
Set keys = redisTemplate.keys(pattern);
redisTemplate.delete(keys)
}