一、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版本的压缩包,我们使用解压缩版,直接解压后就可以使用,解压后如下图:

redis设置缓存时间 redis 设置缓存_redis设置缓存时间

2、开启redis服务端

cmd命令窗口执行运行Redis,我们首先使用cmd命令进入到Redis解压目录并且执行redis-server.exe redis.windows.conf命令即可

注意:redis默认端口为6379,如果端口被占用,修改redis.windows.conf配置文件下端口配置即可。

开启后如下图:

redis设置缓存时间 redis 设置缓存_redis设置缓存时间_02

3、使用redis-cli开启自带客户端(不推荐使用,可使用redis_desktop_manager)

redis设置缓存时间 redis 设置缓存_redis设置缓存时间_03

4、安装redis desktop manager

下载redis desktop manager安装包,安装后连接本地redis

redis设置缓存时间 redis 设置缓存_缓存_04


redis设置缓存时间 redis 设置缓存_redis_05

四、配置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设置缓存时间 redis 设置缓存_redis_06

六、使用redis作为缓存

@Cacheable : Spring在每次执行前都会检查Cache中是否存在相同key的缓存元素,如果存在就不再执行该方法,而是直接从缓存中获取结果进行返回,否则才会执行并将返回结果存入指定的缓存中。

@CacheEvict : 清除缓存,调用方法后从缓存中删除对应key的数据。

@CachePut : @CachePut也可以声明一个方法支持缓存功能。使用@CachePut标注的方法在执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。

例子:

redis设置缓存时间 redis 设置缓存_缓存_07

七、使用redis-cli客户端查看redis缓存数据(不推荐)

需要注意的是,解决了乱码后,发现中文还是乱码,要设置窗口的编码,使用指令chcp 65001 换成UTF-8代码页,在命令行标题栏上点击右键,选择"属性"->“字体”,将字体修改为True Type字体"Lucida Console",然后点击确定将属性应用到当前窗口,然后使用指令redis-cli --raw查看redis缓存数据

redis设置缓存时间 redis 设置缓存_desktop_08

八、使用redis_desktop_manager客户端查看redis缓存数据

redis设置缓存时间 redis 设置缓存_redis设置缓存时间_09