Spring Boot 整合Redis进行数据缓存

版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/cckevincyh/article/details/79632542

在我的毕设项目中,我使用Redis进行数据缓存还有对session进行缓存,所以我开始对Redis进行学习,下面是我项目中如何对Spring Boot和Redis进行整合的介绍。

安装Redis

我们直接访问github网址:redis下载,下载最新的windows X64版本的压缩包
这里写图片描述
下载完成后随便解压到我们的盘符内的文件即可
这里写图片描述

开启Redis

解压完成后我们来开启Redis数据库,Redis数据库的默认端口是6379,如果已经被其他应用程序占用,请自行修改redis.windows.conf配置文件。

如果没有端口没有被占用,我们需要在cmd命令窗口执行运行Redis,我们首先使用cmd命令进入到Redis解压目录并且执行redis-server.exe redis.windows.conf命令即可。
这里写图片描述

添加Redis依赖

 <!-- 添加Redis缓存支持 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>1.4.3.RELEASE</version>
        </dependency>

配置Redis数据库

这里写图片描述

配置CacheManager

下面我们需要让SpringBoot内置的缓存框架使用我们的Redis作为新的缓存,我们来添加一个RedisConfiguration的配置类

package com.ciyou.edu.config.redis

import org.slf4j.Logger
import org.slf4j.LoggerFactory
import org.springframework.cache.CacheManager
import org.springframework.cache.annotation.CachingConfigurerSupport
import org.springframework.cache.annotation.EnableCaching
import org.springframework.cache.interceptor.KeyGenerator
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

import java.lang.reflect.Method

/**
 * Redis配置类
 * @EnableCaching注解来开启我们的项目支持缓存
 * 继承CachingConfigurerSupport重写keyGenerator()来自定义key
 */
@Configuration
@EnableCaching
class RedisConfiguration extends CachingConfigurerSupport{


    private static final Logger logger = LoggerFactory.getLogger(RedisConfiguration.class)

    /**
     * 采用RedisCacheManager作为缓存管理器
     * @param redisTemplate
     * @return
     * SpringBoot项目启动时就会去找自定义配置的CacheManager对象并且自动应用到项目中
     */
    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate){
        logger.info("生成RedisCacheManager缓存管理器...")
        return new RedisCacheManager(redisTemplate)
    }

    @Override
    KeyGenerator keyGenerator() {
        return new KeyGenerator() {
            @Override
            Object generate(Object target, Method method, Object... params) {
                //格式化缓存key字符串
                StringBuilder sb = new StringBuilder()
                //追加类名
                sb.append(target?.getClass()?.getName())
                //追加方法名
                sb.append(method?.getName())
                //遍历参数并且追加
                for(Object obj : params){
                    sb.append(obj.toString())
                }
                logger.info("调用Redis缓存Key:" + sb.toString())
                return sb.toString()
            }
        }
    }
}

我们使用@EnableCaching注解来开启我们的项目支持缓存,我们在配置类内添加了方法cacheManager(),方法的返回值则是使用了我们的Redis缓存的管理器,SpringBoot项目启动时就会去找自定义配置的CacheManager对象并且自动应用到项目中。

我们重写keyGenerator方法,来自定义key的缓存格式。

使用Redis缓存

进行完上述的配置,我们就可以开始使用Redis缓存。
这里写图片描述

@CacheConfig:该注解是用来开启声明的类参与缓存,如果方法内的@Cacheable注解没有添加key值,那么会自动使用cahceNames配置参数并且追加方法名。
@Cacheable:配置方法的缓存参数,可自定义缓存的key以及value。

最后,感谢几位作者的文章解惑:
第十六章:使用Redis作为SpringBoot项目数据缓存
Redis系列三 - Spring boot如何使用redis做缓存及缓存注解的用法总结
REDIS学习(3.2)spring boot 使用redis作为缓存
Spring Boot框架如何通过Redis实现Session共享
Spring Boot + Mybatis + Redis二级缓存(Java Web现代化开发)
Springboot中使用redis,自动缓存、更新、删除

展开阅读全文

没有更多推荐了,返回首页