赞
踩
在我的毕设项目中,我使用Redis进行数据缓存还有对session进行缓存,所以我开始对Redis进行学习,下面是我项目中如何对Spring Boot和Redis进行整合的介绍。
我们直接访问github网址:redis下载,下载最新的windows X64版本的压缩包
下载完成后随便解压到我们的盘符内的文件即可
解压完成后我们来开启Redis数据库,Redis数据库的默认端口是6379,如果已经被其他应用程序占用,请自行修改redis.windows.conf配置文件。
如果没有端口没有被占用,我们需要在cmd命令窗口执行运行Redis,我们首先使用cmd命令进入到Redis解压目录并且执行redis-server.exe redis.windows.conf命令即可。
<!-- 添加Redis缓存支持 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
下面我们需要让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缓存。
@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,自动缓存、更新、删除
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。