一、pom.xml添加依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
<version>1.4.3.RELEASE</version>
</dependency>
二、application.yml添加redis配置
配置如下:
cache:
type: redis
redis:
host: 127.0.0.1
port: 6379
pool:
max-idle: 20 #连接池中最大空闲连接数
min-idle: 1 #连接池中最小空闲连接数
max-active: 20 #连接池最大连接数,为负值说明没有限制
max-wait: 60000 #连接池最大阻塞等待时间,为负数说明没有限制
database: 0
三、本地安装redis(我在本地安装redis)
1、下载redis:
下载最新的windows X64版本的压缩包,我们使用解压缩版,直接解压后就可以使用,解压后如下图:
2、开启redis服务端
cmd命令窗口执行运行Redis,我们首先使用cmd命令进入到Redis解压目录并且执行redis-server.exe redis.windows.conf命令即可
注意:redis默认端口为6379,如果端口被占用,修改redis.windows.conf配置文件下端口配置即可。
开启后如下图:
3、使用redis-cli开启自带客户端(不推荐使用,可使用redis_desktop_manager)
4、安装redis desktop manager
下载redis desktop manager安装包,安装后连接本地redis
四、配置redisConfiguration
配置redisConfiguration.java,配置路径与DemoApplication同级,主要解决乱码问题,配置内容如下:
@Configuration
@EnableCaching
public class RedisConfiguration extends CachingConfigurerSupport {
//自定义cacheManager缓存管理器
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory)
{
RedisSerializer<String> redisSerializer = new StringRedisSerializer();
//解决查询缓存转换异常的问题
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.setDateFormat(new SimpleDateFormat("yyyy-MM-dd"));
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
//使用GenericJackson2JsonRedisSerializer 作为redisTemplate 的序列化执行器
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer(om);
//配置序列化(解决乱码的问题)
RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
.entryTtl(Duration.ZERO)
.serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer))
.serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(genericJackson2JsonRedisSerializer))
.disableCachingNullValues();
RedisCacheManager cacheManager = RedisCacheManager.builder(factory)
.cacheDefaults(config)
.build();
return cacheManager;
}
}
五、DemoApplication启动类添加@EnableCaching注解
如下图所示:
六、使用redis作为缓存
@Cacheable : Spring在每次执行前都会检查Cache中是否存在相同key的缓存元素,如果存在就不再执行该方法,而是直接从缓存中获取结果进行返回,否则才会执行并将返回结果存入指定的缓存中。
@CacheEvict : 清除缓存,调用方法后从缓存中删除对应key的数据。
@CachePut : @CachePut也可以声明一个方法支持缓存功能。使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。
例子:
七、使用redis-cli客户端查看redis缓存数据(不推荐)
需要注意的是,解决了乱码后,发现中文还是乱码,要设置窗口的编码,使用指令chcp 65001 换成UTF-8代码页,在命令行标题栏上点击右键,选择"属性"->“字体”,将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口,然后使用指令redis-cli --raw查看redis缓存数据
八、使用redis_desktop_manager客户端查看redis缓存数据