@Overridepublic User selectUserById(Integer id){
User user =(User) redisTemplate.opsForValue().get("user:"+ id);if(user == null){synchronized(this){
user =(User ) redisTemplate.opsForValue().get("user:"+ id);if(user == null){
user =getById(id);
redisTemplate.opsForValue().set("user:"+ id, user,10, TimeUnit.MINUTES);}}}return user;}
@FunctionalInterfacepublicinterfaceBaseServiceHandler<T>{/**
* 加载数据
* @return T
*/
T loadData();}
调用模板方法(改造之后)
@Overridepublic User findById(Long id){
User user = redisCacheTemplate.loadCache("user:"+String.valueOf(id),20, TimeUnit.SECONDS,()->{return userMapper.selectByPrimaryKey(id);});return user;}