小可爱以前总听大佬说,“redis缓存”,可是自己却没有用过,查阅了一下资料,原来是这么回事~

使用redis做缓存吗 项目中如何使用redis做缓存_redis缓存

实践过程记录一下,作为springboot学习小本本的一篇~

 

第一步:下载Windows版本Redis

我们直接访问github网址:github.com/MSOpenTech/redis/releases,下载最新的windows X64版本的压缩包

使用redis做缓存吗 项目中如何使用redis做缓存_redis_02

小可爱的大佬和小可爱说,

第一个是安装程序方式,可以直接安装,

第二个则是压缩包的形式,解压完就可以用,

第三、四个都是源码文件

这个嘛,小可爱肯定选压缩包,都不用安装,多省事儿啊~

 

第二步:开启Redis

(PS:cmd输入命令:netstat -ano,可以列出所有端口的情况。)

解压完成后小可爱来开启Redis数据库,Redis数据库的默认端口是6379,

如果已经被其他应用程序占用,请自行修改redis.windows.conf配置文件

使用redis做缓存吗 项目中如何使用redis做缓存_Redis_03

如果没有端口没有被占用,就需要小可爱在cmd命令窗口执行运行Redis,

做法是小可爱首先使用cmd命令进入到Redis解压目录,

并且执行redis-server.exe redis.windows.conf命令即可,

如下图所示:

使用redis做缓存吗 项目中如何使用redis做缓存_redis缓存_04

可以看到上图,就证明小可爱的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

使用redis做缓存吗 项目中如何使用redis做缓存_redis缓存_05

成功显示页面,查看下控制台

使用redis做缓存吗 项目中如何使用redis做缓存_redis缓存_06

 

当小可爱再次请求页面列表,意外地发现了...

 

同样是可以访问到数据的,而且跟上次访问列表的数据一致,

并且执行了JPA自动生成的SQL,怎么样都仅仅只是执行一次

使用redis做缓存吗 项目中如何使用redis做缓存_Redis_07

证明小可爱成功了,哈哈哈...(๑・ิ-・ิ๑)

现在小可爱,再来通过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();
            }
        };
    }

 

使用redis做缓存吗 项目中如何使用redis做缓存_项目数据缓存_08

噢耶,数据库内保存的key是否已经按照我们自定义规则生成!