七叶笔记 » java编程 » Spring boot详解缓存redis实现定时过期方法

Spring boot详解缓存redis实现定时过期方法

前言

使用redis进行缓存数据,是目前比较常用的缓存解决方案。常用的缓存形式有一下几种:

1.纯原生代码进行redis的增删改查,手工编写缓存工具类,由开发者在代码中进行调用。

优势:代码由实际使用的开发者进行维护,便于定制化的改造。

2.使用市场上已有的缓存工具,也就是大家常说的大佬的轮子

优势:方便快捷,提升开发效率

添加依赖

修改pom文件引入如下配置

添加配置

application.yml中增加redisd 配置信息

spring:  redis:    host: localhost    port: 6379    database: 0    password: *****    timeout: 10000server:  port: 8082

常规缓存

在spring 3.1版本以后,注意是spring的版本,不是spring boot的版本。在spring-context包中合并进去了spring Cache的内容。可以使用注解方式进行缓存设定。

开启缓存

开启缓存只需要在入口函数上增加@EnableCaching注解

设置缓存空间

设置缓存空间可能大家不好理解,换一个通俗的说法就是设置要缓存的类,把这个类下面要缓存的数据的key加上一个统一的前缀,也是一个注解:@CacheConfig这里可以设置具体的值如下

这里的cacheNames就是我上面说的缓存空间,也许这样还是没办法理解,请看在redis中的缓存情况:

就是说如果我在TestController类下设置的接口缓存数据都会缓存到test-controller这个缓存空间里。

设置缓存

这里就是指具体要缓存的接口数据,使用注解:@Cacheable,具体代码参见上面的代码块。

截止到这里,就可以启动服务,调用接口,会发现数据已经可以缓存到redis中了。但是,这里有一个问题,就是缓存下来的数据,是永久缓存,一旦接口实际的数据有更新,只能通过再设置更新方法来更新缓存,或者删除缓存,我们都知道redis本身是支持设置key的过期时间的,这一特性,让缓存变得更加优雅,所以我们的程序也要有!!!

增加设置缓存过期时间

想要设置缓存过期时间,也并不是很麻烦,只是需要单独增加一个redis的配置类,自定义修改一下缓存管理器就可以了

增加了此配置类之后,之前的代码均不需要更改,直接启动程序,测试验证,可以看到redis中的数据是被设置了过期时间的

此处可能会有个意外惊喜(小坑):就是直接启动程序后,调用接口报错,提示json格式转换异常,这里是由于先前直接用的默认的redisTemplate,value的反序列化问题,可以将之前缓存的数据清理一下,再重新调用就可以了。

总结

注解方式进行接口数据缓存,在实际项目开发过程中比较常见,我分享的这种方式也是大家比较常用的一种方式,配置简单,开发成本低,使用方便。只需要:

引入依赖包增加redis连接信息开启缓存添加需要缓存的类或者方法

后记

这里题外记录一下缓存注解中的一下参数含义及用法

另外设置缓存的注解中支持spEL表达式,下面是一些可用的表达式含义

到此这篇关于Spring boot详解缓存redis实现定时过期方法的文章就介绍到这了,更多相关Spring boot定时过期内容请搜索七叶笔记以前的文章或继续浏览下面的相关文章希望大家以后多多支持七叶笔记!

相关文章