基于API的Redis缓存实现

在Spring Boot整合Redis缓存实现中,除了基于注解形式的Redis缓存实现外,还有一种开发中常用的方式——基于API的Redis缓存实现。这种基于API的Redis缓存实现,需要在某种业务需求下通过Redis提供的API调用相关方法实现数据缓存管理;同时,这种方法还可以手动管理缓存的有效期。

下面,通过Redis API的方式讲解Spring
Boot整合Redis缓存的具体实现


(1)使用Redis API进行业务数据缓存管理。在com.lagou.service包下编写一个进行业务处理的类ApiCommentService

@Servicepublic class ApiCommentService {    @Autowired   private CommentRepository commentRepository;    @Autowired    private RedisTemplate redisTemplate;    public Comment findCommentById(Integer id){        Object o = redisTemplate.opsForValue().get("comment_" + id);       if(o!=null){           return (Comment) o;       }else {           //缓存中没有,从数据库查询           Optional<Comment> byId = commentRepository.findById(id);           if(byId.isPresent()){                Comment comment = byId.get();                //将查询结果存入到缓存中,并设置有效期为1天                redisTemplate.opsForValue().set("comment_"+id,comment,1,TimeUnit.DAYS);                return comment;           }else {                return  null;           }       }     }    public Comment updateComment(Comment comment) {       commentRepository.updateComment(comment.getAuthor(), comment.getaId());       //更新数据后进行缓存更新       redisTemplate.opsForValue().set("comment_"+comment.getId(),comment);       return comment;    }    public void deleteComment(int comment_id) {        commentRepository.deleteById(comment_id);       redisTemplate.delete("comment_"+comment_id);    }

(2)编写Web访问层Controller文件

@RestController@RequestMapping("api") //窄化请求路径public class ApiCommentController {    @Autowired   private ApiCommentService commentService;    @RequestMapping(value = "/findCommentById")   public Comment findCommentById(Integer id){       Comment comment = commentService.findCommentById(id);        return comment;    }    @RequestMapping(value = "/updateComment")   public void updateComment(Comment comment){       Comment comment2 = commentService.findCommentById(comment.getId());       comment.setAuthor(comment.getAuthor());        commentService.updateComment(comment);     }     @RequestMapping(value= "/deleteComment")   public void deleteComment(int id){       commentService.deleteComment(id);     } }
  • 基于API的Redis缓存实现的相关配置。基于API的Redis缓存实现不需要@EnableCaching注解开启基于注解的缓存支持,所以这里可以选择将添加在项目启动类上的@EnableCaching进行删除或者注释

学习让人快乐,学习更让人觉得无知!学了1个多月的《Java工程师高薪训练营》,才发现自己对每个技术点的认知都很肤浅,根本深不下去,立个Flag:每天坚持学习一小时,一周回答网上3个技术问题,把自己知道都分享出来。