小可爱以前总听大佬说,“redis缓存”,可是自己却没有用过,查阅了一下资料,原来是这么回事~
实践过程记录一下,作为springboot学习小本本的一篇~
第一步:下载Windows版本Redis
我们直接访问github网址:github.com/MSOpenTech/redis/releases,下载最新的windows X64版本的压缩包
小可爱的大佬和小可爱说,
第一个是安装程序方式,可以直接安装,
第二个则是压缩包的形式,解压完就可以用,
第三、四个都是源码文件
这个嘛,小可爱肯定选压缩包,都不用安装,多省事儿啊~
第二步:开启Redis
(PS:cmd输入命令:netstat -ano,可以列出所有端口的情况。)
解压完成后小可爱来开启Redis数据库,Redis数据库的默认端口是6379,
如果已经被其他应用程序占用,请自行修改redis.windows.conf配置文件
如果没有端口没有被占用,就需要小可爱在cmd命令窗口执行运行Redis,
做法是小可爱首先使用cmd命令进入到Redis解压目录,
并且执行redis-server.exe redis.windows.conf命令即可,
如下图所示:
可以看到上图,就证明小可爱的redis数据库已经启动了,
下面输出日志开启了服务链接在6379端口~
好了小可爱的数据库已经配置完成了,接下来小可爱来构建springboot整合Redis项目~
第三步:添加依赖
在项目pom.xml中添加对应的redis缓存依赖maven配置
<!-- 添加缓存支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-cache</artifactId>
</dependency>
<!-- 添加Redis缓存支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
小可爱在这里说一句,
添加缓存的支持需要两个依赖,
一个是springboot内部的缓存配置、另外则是我们的redis缓存。
第四步:配置Redis数据库
依赖添加完成后,需要配置小可爱本地的redis数据库连接到项目中,
打开application.yml配置文件,配置以下内容:
#配置redis数据库连接
redis:
host: 127.0.0.1
port: 6379
pool:
max-idle: 20
min-idle: 1
max-active: 20
max-wait: 60000
第五步:配置CacheManager
小可爱需要让springboot内置的缓存框架使用我们的Redis作为新的缓存,
这个时候,小可爱来添加一个RedisConfiguration的配置类,并添加对应的配置如下所示:
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.core.RedisTemplate;
/**
* 采用RedisCacheManager作为缓存管理器
* @param redisTemplate
* @return
*/
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
return new RedisCacheManager(redisTemplate);
}
小可爱使用@EnableCaching注解来开启我们的项目支持缓存,我们在配置类内添加了方法cacheManager(),方法的返回值则是使用了我们的Redis缓存的管理器,SpringBoot项目启动时就会去找自定义配置的CacheManager对象并且自动应用到项目中。
第六步:验证redis缓存
运行项目并查看控制台输出的日志是否存在异常,启动成功后访问地址:127.0.0.1:8080/list
成功显示页面,查看下控制台
当小可爱再次请求页面列表,意外地发现了...
同样是可以访问到数据的,而且跟上次访问列表的数据一致,
并且执行了JPA自动生成的SQL,怎么样都仅仅只是执行一次
证明小可爱成功了,哈哈哈...(๑・ิ-・ิ๑)
现在小可爱,再来通过redis-cli客户端查看下数据库内保存的key
是不是感觉Redis自动生成的Key,让我们很无奈,因为小可爱根本看不懂!
附加步骤:自定义Key
打开RedisConfiguration配置类,添加继承CachingConfigurerSupport类,并重写方法keyGenerator()
根据类名、方法名、参数列表等完成自定义Redis缓存的Key定义
@Override
public KeyGenerator keyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object o, Method method, Object... objects) {
//格式化缓存key字符串
StringBuilder sb = new StringBuilder();
//追加类名
sb.append(o.getClass().getName());
//追加方法名
sb.append(method.getName());
//遍历参数并且追加
for (Object obj : objects) {
sb.append(obj.toString());
}
System.out.println("调用Redis缓存Key : " + sb.toString());
return sb.toString();
}
};
}
噢耶,数据库内保存的key是否已经按照我们自定义规则生成!