基于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个技术问题,把自己知道都分享出来。