[Spring Boot]11 使用@Cacheable注解实现Redis缓存

前言

为了方便讲解,模拟一个需要使用Redis缓存的场景,比如:一款APP的首页,由于其需要加载的数据量较大,于是决定把首页的部分数据使用Redis进行缓存,举例:比如要缓存首页的文章列表(ArticleList)模块。

使用@Cacheable注解实现Redis缓存

直接操作Redis比较麻烦,集合Spring本身的缓存机制会非常地方便。
@Cacheable是spring自带的缓存注解,因为其支持Redis缓存,所以我们来看下是怎么实现的。

1)首先

要开启Spring的缓存功能。

// 使用注解
@EnableCaching

此注解可以加到Redis配置类里面。
在这里插入图片描述

@Configuration
@EnableCaching
public class RedisConfig {
    @Bean
    public RedisTemplate<String, Object> redisTemplate(LettuceConnectionFactory lettuceConnectionFactory) {
        // 配置redisTemplate
        RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
        
2)其次

在文章列表的实现类里面加上@Cacheable注解。
实现类为:ArticleServiceImpl.java

    // value :缓存组件的名字
    // key :缓存使用的 key
    // unless :否定缓存,可以通过 #result 进行判断
    @Cacheable(value = "home:article", key ="'new'", unless = "#result==null")
    @Override
    public List<ArticleListDTO> listArticle() {
        // 取数据库最新的文章数据
        return baseMapper.listArticle();
    }

首页接口直接对外提供此接口即可。

    @ApiOperation(value = "最新文章", notes = "列表")
    @PostMapping("/list")
    public ResponseEntity<List<ArticleListDTO>> listNewArticle() {
        return ResponseEntity.ok(articleService.listArticle());
    }
3)再次

有关缓存更新问题。
可以在Redis里面设置个过期时间进行清空,还有在后台系统对文章进行新增或者修改等操作时,进行缓存的清空。
清空方法为使用@CacheEvict注解:

    @CacheEvict(value = "home:article", allEntries = true)
    @Override
    public void saveArticle(Article article) {
    
    }
  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

joinclear

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值