1.缓存
当执行增删改操作时,必须保证缓存和数据库数据的一致性。----删除缓存
StudentServiceImpl
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentMapper studentMapper;
@Autowired
private RedisTemplate<String,Object> redisTemplate;
@Override
public Student getById(Integer id) {
ValueOperations<String,Object> forValue = redisTemplate.opsForValue();
//1.查询缓存
Object o = forValue.get("student::" + id);
if(o!= null){ //缓存命中
return (Student) o;
}
Student student = studentMapper.selectById(id);
//2.查询到应放入缓存
if(student != null){
forValue.set("student::"+id,student);
}
return student;
}
//增
@Override
public Student insert(Student student) {
//新增的数据 缓存中肯定没有,所以不用删除
int insert = studentMapper.insert(student);
return student;
}
//删
@Override
public Integer delete(Integer id) {
//先删除缓存,在删除数据库中的数据
/**
* 需要缓存与数据库中数据保持一致
* */
redisTemplate.delete("student::"+id);
int i = studentMapper.deleteById(id);
return i;
}
//改
@Override
public Student updatet(Student student) {
//修改先删除缓存中的数据
redisTemplate.delete("student::"+student.getSid());//缓存与数据库中的数据保持一致
int update = studentMapper.updateById(student);
return student;
}
}
StudentController
@RestController
@RequestMapping("student")
public class StudentController {
@Autowired
private StudentService studentService;
@GetMapping("getById/{id}")
public Student getById(@PathVariable Integer id){
return studentService.getById(id);
}
//增加
@GetMapping("insert")
public Student insert(Student student){
return studentService.insert(student);
}
//删除
@GetMapping("delete/{id}")
public Integer delete(@PathVariable Integer id){
return studentService.delete(id);
}
//修改
@GetMapping("update")
public Student update(Student student){
return studentService.updatet(student);
}
}
2、Redis使用分布式锁
2.1 .1版本
entity (pojo)
@Data
@TableName(value = "product")
public class Stock {
@TableId(type = IdType.AUTO)
private int productid;
private Integer num;
}
dao
@Mapper
public interface StockDao extends BaseMapper<Stock> {
}
service
@Service
public class StockService_lock_syn {
@Autowired
private StockDao stockDao;
public static O